Как перенаправить *.htm *,htm *,html на *.html в .htaccess

#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 , что директива использовалась ранее.