Просмотр полной версии : Проблема с mod_rewrite и индексом
Доброго времени суток, форумчане!
Я тут делаю скрипт и столкнулся с такой проблемой. У меня не хочет отображаться index.php
Сейчас поясню ситуацию.
Мне нужны ссылки вот такого вида
сайт.ру/articles/ - главная страница модуля статей. Тут нужно заметить что articles - реальная папка
сайт.ру/articles/название_категории - будет выводиться статьи в опр. категории
В .htaccess такой код
RewriteEngine On
RewriteRule ^/([a-z]+)?$ articles.php?cat=$1 //вот тут получаеться должна выводиться категория
И тут я думаю что символ + здесь означает один или более раз то есть сайт.ру/articles/название_категории или сайт.ру/articles/н или сайт.ру/articles/назван
Так вот а по адресу сайт.ру/articles/ должна грузиться index.php
Но такого почему то нету.
Работаю на Денвере.
Заранее - Спасибо!
/([a-z]+)?$ articles.php?cat=$1 /
помойму $ тут лишний
5triker
помойму $ тут лишний
Ничего не лишний
blaga
Попробуй так
RewriteRule ^articles/?$ index.php [L]
RewriteRule ^([a-z]*)?$ articles.php?cat=$1
Обоати внимание, что при использовании
RewriteRule ^([a-z]*)?$ articles.php?cat=$1
Адресс долджен быть вида
http://site.com/news
а при
RewriteRule ^([a-z]*)/?$ articles.php?cat=$1
Адресс долджен быть вида
http://site.com/news/
хотелось бы посоветовать ТС также прочитать вот это: http://www.opennet.ru/docs/RUS/mod_rewrite/.
5triker, $ не лишний. (хотя, если честно я не знаю нафига он.)
Naydav, на то что ты обращал мое внимание, я знал. А вот по поводу примера есть пара замечаний. во-первых в твоем примере обработаеться только одно правило потому что у тебя после первой строки идет флаг [L](он означает что это мол последнее правило), а во-вторых ты предлагаешь жестко привязать это к реальной папке articles а .htsccess придется класть в корень сайта что не допустимо в моем случае...
zythar, я вообще то когда то смотрел эту статью, но там много лишнего и переведена она не очень хорошо. Сложно понять. :(
Но вообще всем спасибо за попытки помочь. Тут вдруг в голову пришла мысль как сделать. Получилось так
RewriteEngine On
RewriteRule ^([^a-z])?$ index.php
RewriteRule ^([a-z]+)?$ articles.php?cat=$1 [L]
то есть добавилось новое правило вначало если никаких символов от a-z то индекс. если они есть то статьи.
хотя, если честно я не знаю нафига он
^ - начало строки
$ - конец строки
во-первых в твоем примере обработаеться только одно правило потому что у тебя после первой строки идет флаг [L](он означает что это мол последнее правило)
Я зная, я специально его и поставил!!!
Если в адресной строке site.ru/articles/, то выводим индекс, и дальнейшие правила не считываем
а во-вторых ты предлагаешь жестко привязать это к реальной папке articles а .htsccess придется класть в корень сайта что не допустимо в моем случае...
Какой реальной папке, да все равно есть она к тебя физически папка эта или нет
RewriteRule ^antichat/?$ index.php [L]
Это означает, если в адрессной строке есть запрос
site.ru/antichat/, то вызываем скрипт ndex.php, и все остальные правила не обрабатываем
А физически ее может и не быть, папки эитой
Naydav, ну вот, сенк. Теперь буду знать.
Прочти выше
Вот тебе пример
_http://www.motosale.com.ua/aprilia/
_http://www.motosale.com.ua/kawasaki/
Ты что реально думаешь, что есть папки aprilia и kawasaki?
Нет конечно, вот строка, что их (ссылки) обрабатывает
RewriteRule ^(.*)/$ index.php?sample=model&name=$1 [L]
Naydav, но у меня то это реальная папка! там не нужно делать никаких подстановок и замен.
Аааа...
Понятно, тогда .htaccess в папку articles
RewriteRule ^([a-z]+)?$ articles.php?cat=$1 [L]
Naydav, проблема уже решена. )
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot