PDA

Просмотр полной версии : Проблема с mod_rewrite и индексом


blaga
03.07.2008, 15:50
Доброго времени суток, форумчане!

Я тут делаю скрипт и столкнулся с такой проблемой. У меня не хочет отображаться index.php
Сейчас поясню ситуацию.
Мне нужны ссылки вот такого вида
сайт.ру/articles/ - главная страница модуля статей. Тут нужно заметить что articles - реальная папка
сайт.ру/articles/название_категории - будет выводиться статьи в опр. категории


В .htaccess такой код

RewriteEngine On
RewriteRule ^/([a-z]+)?$ articles.php?cat=$1 //вот тут получаеться должна выводиться категория

И тут я думаю что символ + здесь означает один или более раз то есть сайт.ру/articles/название_категории или сайт.ру/articles/н или сайт.ру/articles/назван
Так вот а по адресу сайт.ру/articles/ должна грузиться index.php
Но такого почему то нету.
Работаю на Денвере.
Заранее - Спасибо!

5triker
03.07.2008, 16:06
/([a-z]+)?$ articles.php?cat=$1 /
помойму $ тут лишний

Naydav
03.07.2008, 16:33
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/

zythar
03.07.2008, 16:49
хотелось бы посоветовать ТС также прочитать вот это: http://www.opennet.ru/docs/RUS/mod_rewrite/.

blaga
03.07.2008, 18:51
5triker, $ не лишний. (хотя, если честно я не знаю нафига он.)
Naydav, на то что ты обращал мое внимание, я знал. А вот по поводу примера есть пара замечаний. во-первых в твоем примере обработаеться только одно правило потому что у тебя после первой строки идет флаг [L](он означает что это мол последнее правило), а во-вторых ты предлагаешь жестко привязать это к реальной папке articles а .htsccess придется класть в корень сайта что не допустимо в моем случае...
zythar, я вообще то когда то смотрел эту статью, но там много лишнего и переведена она не очень хорошо. Сложно понять. :(
Но вообще всем спасибо за попытки помочь. Тут вдруг в голову пришла мысль как сделать. Получилось так

RewriteEngine On
RewriteRule ^([^a-z])?$ index.php
RewriteRule ^([a-z]+)?$ articles.php?cat=$1 [L]

то есть добавилось новое правило вначало если никаких символов от a-z то индекс. если они есть то статьи.

Naydav
03.07.2008, 19:05
хотя, если честно я не знаю нафига он
^ - начало строки
$ - конец строки

во-первых в твоем примере обработаеться только одно правило потому что у тебя после первой строки идет флаг [L](он означает что это мол последнее правило)
Я зная, я специально его и поставил!!!
Если в адресной строке site.ru/articles/, то выводим индекс, и дальнейшие правила не считываем

а во-вторых ты предлагаешь жестко привязать это к реальной папке articles а .htsccess придется класть в корень сайта что не допустимо в моем случае...
Какой реальной папке, да все равно есть она к тебя физически папка эта или нет

RewriteRule ^antichat/?$ index.php [L]

Это означает, если в адрессной строке есть запрос
site.ru/antichat/, то вызываем скрипт ndex.php, и все остальные правила не обрабатываем
А физически ее может и не быть, папки эитой

blaga
03.07.2008, 19:07
Naydav, ну вот, сенк. Теперь буду знать.

Naydav
03.07.2008, 19:09
Прочти выше

Вот тебе пример

_http://www.motosale.com.ua/aprilia/
_http://www.motosale.com.ua/kawasaki/
Ты что реально думаешь, что есть папки aprilia и kawasaki?
Нет конечно, вот строка, что их (ссылки) обрабатывает
RewriteRule ^(.*)/$ index.php?sample=model&name=$1 [L]

blaga
03.07.2008, 19:25
Naydav, но у меня то это реальная папка! там не нужно делать никаких подстановок и замен.

Naydav
03.07.2008, 19:29
Аааа...
Понятно, тогда .htaccess в папку articles


RewriteRule ^([a-z]+)?$ articles.php?cat=$1 [L]

blaga
03.07.2008, 19:32
Naydav, проблема уже решена. )