Про 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 включенными — не работает, не знаю почему…


Оставить комментарий