Перенаправление htaccess https с www на non-www

11 февр. 2017 г., 03:52:47
Просмотры: 24.9K
Голосов: 4

Я добавил перенаправление .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.

Есть идеи как исправить эту ошибку?

3
Комментарии

Вопрос: 1. Вы устанавливали SSL-сертификат? 2. Вы хотите, чтобы все ваши http-запросы перенаправлялись на https?

Fayaz Fayaz
11 февр. 2017 г. 04:20:59

1. Я установил SSL-сертификат от Comodo. Текущие посетители сайта видят https://example.com 2. Я хочу сделать редирект: когда посетители заходят на https://www.example.com, их нужно перенаправлять на https://example.com

Спасибо

DinhTv DinhTv
11 февр. 2017 г. 04:31:55

Я дал ответ с использованием mod_rewrite. Однако если проблема сохраняется, значит дело в чём-то другом. В таком случае мне понадобится больше информации. Например, используете ли вы сервисы вроде Cloudflare? Какая у вас конфигурация SSL? И так далее.

Fayaz Fayaz
11 февр. 2017 г. 06:44:50
Все ответы на вопрос 1
1

Прежде чем я предоставлю вам КОД, позвольте объяснить несколько моментов:

Пункт 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
11 февр. 2017 г. 06:32:23
Комментарии

Спасибо. У меня добавление этого в .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

Kyle Vassella Kyle Vassella
21 нояб. 2017 г. 18:50:28