Архив рубрики ‘бубен’

Про mod_rewrite, снова

в руководстве по apache видимо не зря пишут, что mod_rewrite — это сплошное шаманство…

искал сегодня весь вечер решение такой задачи:
пусть у нас есть на web-сервере странички
http://serv.qu/page1.html
http://serv.qu/page2.html
и т.д.
нужно, чтобы их содержимое было доступно по адресам
http://serv.qu/page1
http://serv.qu/page1/
с первым адресом все относительно просто, а вот со вторым, из-за слэша в конце, засада… В результате плясок с бубном выкристаллизовалось такое решение
во-первых отключаем MultiViews опцией Options -MultiViews
далее в .htaccess пишем
RewriteCond     %{REQUEST_URI}          ^(.*)/$
RewriteCond     %{REQUEST_FILENAME}     !-d
RewriteRule     ^(.*)$                  %1              [R=301,L]
(то есть, при наличии слэша в конце запроса и отсутствии такой директории на диске, перенаправляем на адрес без слэша в конце) RewriteCond     %{REQUEST_URI}          !^.*/$
RewriteCond     %{REQUEST_FILENAME}     !-f
RewriteRule     ^(.*)$                  $1.html         [L]
(а здесь уже проверяем, что если такого файла нет, то значит к нему надо добавить .html)

А если оставить MultiViews включенными — не работает, не знаю почему…