Исправить err_too_many_redirects

Рубрика: Прочее
Posted on: 13.05.2020 в 11:57 - Комментариев нет - Visited 166 times

Эта ошибка может возникнуть, когда мы пытаемся перевести сайт на использование протокола `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«!

Добавить комментарий

Включите изображения, чтобы увидеть вопрос *