#regex #apache #.htaccess #mod-rewrite
Вопрос:
Мне нужно перенаправить *.htm *,htm *,html
на *.html
, но когда страница находится *.html
, оставьте тот же URL *.html
.
У меня есть это правило, но есть проблема -> цикл перенаправления. Что я должен изменить?
RewriteEngine On
RewriteRule ^(.*)(.|,)htm(l?)$ $1.html [R=301]
Комментарии:
1. Ваш шаблон совпадает
.html
, поэтому он снова перенаправится. Вам нужно обработать*.htm
и*,htm
*,html
отдельно. Что-то вроде^(.*)(.htm|,html?)$
Ответ №1:
Как справедливо заметил CBroe, эта проблема связана с вашим шаблоном, который также совпадает .html
, следовательно, вызовет цикл перенаправления.
Вы можете исправить это с помощью:
RewriteRule ^(. )(?:.htm|,html?)$ $1.html [R=301,L,NC,NE]
PS: Это предполагает RewriteBase
, что директива использовалась ранее.