Я возился с перезаписью URL на моем сайте и исправлял канонизацию моих URL (чтобы у меня не было дубликатов данных в поисковых системах и т. Д.), И везде рекомендовалось либо всегда удалять / форсировать трейлинг косая черта (я решил удалить его), а также перенаправить / индексировать. Поэтому я добавил следующие два правила в мой .htaccess для подбора mod_rewrite в Apache:
- удалить косую черту
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
- удалить трейлинг / индекс
RewriteRule ^(.*)/?index$ http://%{HTTP_HOST}/$1 [R=301,L]
Эти правила прекрасно работают в браузере. Но некоторые из моих форм Ajax перестали функционировать внезапно! Я проследил это и в Chrome, и в Firefox (Firebug), и то, что происходит, очень странно. В обоих браузерах страница выполняет ajax-вызов:
<mydomain>/ajax/index (ajax params intact) --> 301 redirect to <mydomain>/ajax/
<mydomain>/ajax/ (ajax params are no longer sent!) --> 301 redirect to <mydomain>/ajax
<mydomain>/ajax (ajax params again not sent) --> 200 OK but obviously script complains that params don't exist
Может ли кто-нибудь подтвердить, что это так или я его теряю? Если так, то, черт возьми, он так себя ведет? И есть ли правильное решение для его исправления (кроме изменения всех моих вызовов ajax, чтобы никогда не перенаправляться, например, <mydomain>/ajax
)?
Большое спасибо за ваше время, ребята :)
Приветствия
Али