Автор Тема: Очередной раз про RewriteRule  (Прочитано 2243 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Transact

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очередной раз про RewriteRule
« : 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 работал не в корневом каталоге а "глубже"?
Всю башку уже сломал...
« Последнее редактирование: 09 Мая 2003, 21:46:08 от Transact »

Оффлайн Transact

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очередной раз про RewriteRule
« Ответ #1 : 09 Мая 2003, 23:47:30 »
То, о чем мечталось долгими зимними вечарами...

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

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

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28