Эта ошибка может возникнуть, когда мы пытаемся перевести сайт на использование протокола `HTTPS` и тупо и невнятно копируем в свой .htaccess
всё, что лежит в нете со пометкой: «Та всё работает, зуб даю»
Дополнительно обратим внимание, конкретно на «WordPress», в нём есть очень удобный механизм перенаправлений, HTTP(S)
и WWW
. Если у вас на домене в корне живёт только сам «WordPress», он прекрасно со всем справляется. А если надо больше?
Лично у меня эта ошибка возникла, когда так же слепо воткнул первую же попавшуюся «стопудовоблябуду» «рабочее» решение, сайт свалился «err_too_many_redirects». Ну мне ж интересно, почему?
RewriteEngine on RewriteCond %{HTTP_HOST} ^yoursite.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC] RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
Вот и есть наше бесконечное перенаправление www.yoursite.com [NC]
. То есть, наш результат — это условие для правила перенаправления. А зашли на www.yoursite.com
, перенаправьтесь на www.yoursite.com
и так до бесконечности.
Теперь исправляем эту ошибку. И заодно пишем правильные перенаправления, для удобства, я разбил на 2 блока:
1 блок, перенаправляем всё, что без www
на https://www
:
RewriteEngine on RewriteCond %{HTTP_HOST} ^ptipti.ru$ RewriteRule ^(.*)$ https://www.ptipti.ru/$1 [R=301]
Здесь всё понятно, отрабатывает и http://ptipti.ru
и https://ptipti.ru
2 блок, перенаправляем только http://www
на https://www
:
RewriteCond %{HTTP_HOST} ^www.ptipti.ru$ RewriteCond %{SERVER_PORT} ^80 RewriteRule ^(.*)$ https://www.ptipti.ru/$1 [R=301]
Используем дополнительное условие SERVER_PORT
, чтобы не зациклить https://www
навсегда.
Сохраняем. Прощай, «err_too_many_redirects«!