Forum Webscript.Ru

Общие => Веб Сервера => Тема начата: Transact от 09 Мая 2003, 21:40:29

Название: Очередной раз про RewriteRule
Отправлено: Transact от 09 Мая 2003, 21:40:29
Какая-то беда творится. Задача простая - заменить вызовы
www.blabla.ru/dir/news/shownews.php?id=privet  
на
www.blabla.ru/dir/news/privet

Пишу в htaccess:  
RewriteRule ^dir/news/(.*)$ dir/news/shownews.php?id=$1
Вызов www.blabla.ru/dir/news/privet отрабатывает отлично. Но php выдает, что переменная id ... равна "shownews.php"

А вот в этом случае все работает нормально:
RewriteRule ^news/(.*)$ dir/news/shownews.php?id=$1
Вызов www.lala.ru/news/privet выдает, что переменная id равна "privet".
Все Ok но не удобно, т.к. текущим каталогом становится www.blabla.ru/news/ из-за этого в этом разделе придется переделывать все ссылки и пути к картинкам и включаемым файлам. Что нежелательно.

Получается, что добавление одного уровня вложение каталога приводит к неработоспособности. Как сделать, чтобы RewriteRule работал не в корневом каталоге а "глубже"?
Всю башку уже сломал...
Название: Очередной раз про RewriteRule
Отправлено: Transact от 09 Мая 2003, 23:47:30
То, о чем мечталось долгими зимними вечарами...

Причина оказалась такая. Корень у запрашиваемого и подставляемого URL-а одинаковый, и адрес парсился два раза. А может и больше. Отсюда и ошибка. Флаг [L] не помог. Но решение оказалось очень простым.
^dir/calendar/(.*)$ dir/news/shownews.php?id=$1
вызов:
www.blabla.ru/dir/calendar/privet

Разумеется, никакого каталога "calendar" на сайте нет.