mod_rewrite. автоматическое добавление слеша в конец

Alex.Antipin

Новичок
mod_rewrite. автоматическое добавление слеша в конец

Здравствуйте!
Я понимаю, что тему уже заезжаная донельзя, в одном только этом форуме нашел несколько подобных тем, и яндекс помучал изрядно… не помогло, к сожалению (

Картина маслом:
ничего сверхъестественного, есть скрипт pagemaker.php который в зависимости от параметра page генерирует некую страницу.

Естественно, хотелось бы, чтобы все было красиво и выглядело следующим образом:
пользователь набирает http://xxxxx/about/ а мод рерайт преобразует в pagemaker.php?page=about (при этом в адресной строке, разумеется, остается то, то набрал пользователь, т.е. http://xxxxx/about/ )

все это, слава богу работает, благодаря строке

RewriteEngine On
RewriteRule ^([A-Za-z0-9\-_]+)/?$ /pagemaker.php?page=$1

Причем работает, независимо от того, набрал пользователь
http://xxxxx/about/
или
http://xxxxx/about

Однако, тут то и начинаются проблемы…
Дело в том, что скрипт, генерирующий меню, сравнивает некую переменную $uri (в случае с разделом about она равна "/about/") с переменной $GLOBALS["REQUEST_URI"], чтобы выделить активный пункт меню и убрать с него ссылку.

Как вы уже догадываетесь, в случае, если пользователь набирает http://xxxxx/about (без слеша)
то попадает туда куда нужно, однако меню получается не активным, т.к. $uri="/about/", а $GLOBALS["REQUEST_URI"] = "/about".

Можно, конечно, с помошью PHP проверять, есть ли слеш в конце, добавлять его в противном случае и т.д., но хотелось бы все сделать с помощью mod_rewrite, чтобы слешь автоматически добавлялся, например как здесь.

Причем, нечно подобное:
RewriteRule ^test$ /test/ [R]
работает вполне корректно, если папка test существует.

А вот ка скрестить эти две строки — я не знаю.

Чисто теоретически думаю, что сначала нужно произвести операцию на вроде такой:
RewriteRule ^([A-Za-z0-9\-_]+)$ /$1/ [R]
а вслед за ней уже передать все скрипту с помощью
RewriteRule ^([A-Za-z0-9\-_]+)/?$ /pagemaker.php?page=$1

Но на практике так не получается. К сожаленю, я плохо знаком с возможностями mod_rewrite, а время поджимает.

Так что если кто-то знает решение проблемы, огромная просьба — выручайте!

З.Ы. Прошу прощения, что так много текста — хотелось описать проблему как можно более детально.

-~{}~ 20.10.06 18:30:

Мое предположение оказалось верным, только я не знал о флаге N.

Вообщем, если у кого-то подобная проблема возникнет, решается она следующим образом:

RewriteRule ^([A-Za-z0-9\-_]+)$ /$1/ [R,N]
RewriteRule ^([A-Za-z0-9\-_]+)/?$ /pagemaker.php?page=$1

Все же, если такой вариант в чем-то некорректен, просьба меня поправить!
 

ys

отодвинутый новичок
http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

ctrlf-F >> Trailing Slash Problem >> enter
 

Alex.Antipin

Новичок
Это я уже читал, если бы вы внимательно прочитали мой пост - поняли что меня интересует нечно другое. В любом случае я уже решил эту проблемму.
 
Сверху