mod_rewrite и крайние слэши
Проблеймой это назвать трудно. Скажем так - ситуация, которая привела меня замешательство.
Есть у нашей веб-студии сайт. Есть на сайте hotlog-счётчик, по которому мы смотрим статистику заходов.
На сайте применяется ЧПУ-адресация (ну когда ссылки "красивые").
Внутри сайта все подобные ссылки оканчиваются слэшем. То есть всё что со слешем на конце - считается директорией на сервере (пусть виртуальной, не суть важно) а всё что без слэша - файлом. Всё это дело прописано директивами mod_rewrite. Естественно, что адреса со слэшем считаются верными, а без слэша - неправильными.
Я применяю адресацию именно со слэшем на конце.
Пример записи:
RewriteRule ^portfolio/sites/([0-9]+)/$ /index.php?mod=site&id=$1
Соотв. этому правилу:
http://ir-design.ru/portfolio/sites/26/ - правильный адрес
http://ir-design.ru/portfolio/sites/26 - неправильный адрес
всё так и должно быть. так и было задумано. пока я не заглянул в статистику страниц (таблица ниже - табуляция должна быть):
1 http://ir-design.ru 47 21.17%
2 http://ir-design.ru/portfolio 30 13.51%
3 http://ir-design.ru/portfolio/sites/26 17 7.66%
4 http://ir-design.ru/portfolio/graphdesign 8 3.60%
5 http://ir-design.ru/clients 7 3.15%
и так далее.
но все эти адреса - без конечного слэша!!!
выходит, что все пользователи заходят по неправильным адресам? но как такое возможно, если на самом сайте все адреса точно верные!!! (менеджеры не дают лажать).
у меня есть два варианта. либо хотлог неправильно интерпретирует эти адреса, либо поисковые системы подсовывают юзерам адреса с отрезанными слэшами.
если сделать безразличие со слэшем или без - путаница только увеличится. хотя...
кто что думает по этому поводу? как быть?
site.ru/articles и site.ru/articles/ быть НЕ ДОЛЖНО. А то что она у вас есть - это уже кривота реализации
Поправь правило для mod_rewrite на такое
По идее разницы между
Поправь правило для mod_rewrite на такое
Цитата:
RewriteRule ^portfolio/sites/([0-9]+)/?$ /index.php?mod=site&id=$1 [L]
Цитата: RussianSpy
По идее разницы между site.ru/articles и site.ru/articles/ быть НЕ ДОЛЖНО. А то что она у вас есть - это уже кривота реализации
Поправь правило для mod_rewrite на такое
Поправь правило для mod_rewrite на такое
кривота реализации - ничего кривого нет, с регами для реврайта у меня нет проблем. просто хотелось получить ответ, почему так происходит и как быть? я же не спрашивал почему у меня оба варианты не работают ;)
посмотрел на других сайтах - тоже где как.
за совет спасибо.
вроде так
Цитата: foxweb
просто хотелось получить ответ, почему так происходит и как быть?
Изменить регулярное выражение так как я показал... И будет тебе счастье, коллега...
Цитата: RussianSpy
Изменить регулярное выражение так как я показал... И будет тебе счастье, коллега...
да да, я всё понял. вопрос был не столько технический, сколько философский - "быть или не быть".
УРЛЫ без слеша на конце и со слешом ДОЛЖНЫ быть идентичны