Перенаправление htaccess https с www на non-www
Я добавил перенаправление .htaccess
https
с www
на non-www
следующим образом:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
</IfModule>`
Когда я захожу на мой домен, следующие перенаправления работают без проблем:
http://www.example.com → http://example.com
http://www.example.com/abc → http://example.com/abc
Но когда я захожу на домен как https://www.example.com
или https://www.example.com/abs
, мой домен не перенаправляется и показывает код ошибки: SSL_ERROR_INTERNAL_ERROR_ALERT
(в Firefox) или ERR_SSL_PROTOCOL_ERROR
(в Chrome)
Я использую WordPress и плагин Really Simple SSL.
Есть идеи как исправить эту ошибку?

Прежде чем я предоставлю вам КОД, позвольте объяснить несколько моментов:
Пункт 1:
Лучше разрешать только ссылки с https
. Смешивание http
и https
для одного и того же контента нарушает безопасность, обеспечиваемую https
. С http
вы никогда не можете быть уверены, что посетители видят ту же страницу, которую вы предоставляете со своего сервера.
Пункт 2:
Поисковые системы считают сайты с http
и https
разными сайтами, даже если домен одинаковый. Поэтому, если не настроено правильно, вы можете получить штраф за дублирование контента. Рекомендуется полностью перейти на https
для лучшего SEO.
Пункт 3:
Даже с правильным КОДом в .htaccess
вы можете получить ту же ошибку, если SSL не настроен правильно. Поэтому после изменения КОДа в .htaccess
лучше проверить настройку SSL на соответствие стандартам. Вы можете использовать инструменты, такие как этот.
Рекомендуемый КОД:
Основываясь на вышеизложенных пунктах, вот КОД, который вы можете использовать:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} =off [OR]
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ "https://example.com/$1" [R=301,L]
# оставшийся htaccess mod_rewrite код для WordPress
</IfModule>
Это приведет к следующим перенаправлениям:
http://www.example.com/ → https://example.com/
http://www.example.com/abc → https://example.com/abc
https://www.example.com/ → https://example.com/
https://www.example.com/abc → https://example.com/abc
# Дополнительно, даже если ваш сайт доступен по IP или
# другим доменам или поддоменам, этот код также исправит это
http://Your_Server_IP/abc → https://example.com/abc
http://sub-dmoani.example.com/abc → https://example.com/abc
http://www.other-domain.com/abc → https://example.com/abc
Не рекомендуемый КОД:
Если по какой-то причине вы не хотите следовать вышеуказанной рекомендации и все же хотите разрешить и http
, и https
, вы можете использовать следующий КОД (основанный на этом ответе):
<IfModule mod_rewrite.c>
RewriteEngine On
# установка переменной протокола
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} =off
RewriteRule ^(.*)$ - [env=proto:http]
RewriteCond %{HTTP_HOST} !^example\.com$
RewriteRule ^(.*)$ "%{ENV:proto}://example.com/$1" [R=301,L]
# оставшийся htaccess mod_rewrite код для WordPress
</IfModule>
Это приведет к следующим перенаправлениям:
http://www.example.com/ → http://example.com/
http://www.example.com/abc → http://example.com/abc
https://www.example.com/ → https://example.com/
https://www.example.com/abc → https://example.com/abc

Спасибо. У меня добавление этого в .htaccess не вызывает изменений. Я пытаюсь сделать редирект с https на http (пока у нас нет SSL) и одновременно с www на non-www. Либо через htaccess, либо через php в functions.php. Не могли бы вы взглянуть на мой вопрос и посмотреть, сможете ли помочь?https://wordpress.stackexchange.com/questions/286464/php-redirect-https-to-http-and-www-to-non-www
