Перенаправление WordPress /.htaccess/HSTS/SSL
Я пытаюсь правильно настроить HSTS на своем веб-сайте, и в настоящее время он "работает наполовину", мне нужно найти правильный способ перенаправления: http://www.example.com
на https://www.example.com
, наконец, на https://example.com
.
На самом деле, на веб-сайте есть 1 перенаправление на версию URL:
http://www.example.com
301 перенаправление наhttps://example.com/
http://example.com
301 перенаправление наhttps://example.com/
https://www.example.com
301 перенаправление наhttps://example.com/
Теперь мне нужно настроить перенаправление через мой .htaccess
делая это таким образом:
-
http://www.example.com
301 перенаправлениеhttps://www.example.com
301 перенаправлениеhttps://example.com
"
Я пытался пару раз, но всегда заканчивал тем, что закрывал сайт. Не могли бы вы, пожалуйста, помочь мне исправить это?
Извините, ребята, я забыл упомянуть кое-что важное: я уже установил HSTS, и он работает над example.com
, но когда я тестирую его как www.example.com
, я получаю "Ошибка: Поддомен, Ошибка: Нет заголовка HSTS, Ошибка: HTTP не перенаправляет на HTTPS"
Я проверяю это с hstspreload.org
1 answers
Итак, канонический URL-адрес https://example.com/...
. (Вы, кажется, описываете бессмысленное перенаправление посредника? Вы должны перенаправлять только на конечный канонический URL-адрес, не нужно ничего промежуточного.)
Это всего лишь стандартное перенаправление с HTTP на HTTPS.
Вы можете сделать это, используя mod_rewrite в верхней части вашего файла .htaccess
. Например:
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule (.*) https://example.com/$1 [R=301,L]
Что сказано выше... если запрос относится к поддомену HTTP или www, то 301 перенаправление на канонический URL.
Однако вам следует проверить это с помощью 302 (временного) перенаправления , прежде чем внедрять HSTS. Если вы уже внедрили HSTS и посетили URL HTTPS, то браузер автоматически отправит обновленный запрос, и вы никогда не увидите перенаправление (в чем весь смысл HSTS).
ОБНОВЛЕНИЕ:
Ошибка: HTTP не перенаправляет на HTTPS
http://www.example.com
(HTTP) перенаправляет наhttps://example.com/
. Первое перенаправление сhttp://example.com
должно быть на защищенную страницу на том же хостинге (https://www.example.com
)"
Ах, казалось бы, чтобы удовлетворить требования к отправке, чтобы попасть в список предварительной загрузки HSTS, вы должны сначала "Перенаправить с HTTP на HTTPS на том же хосте". (Это, однако, казалось бы, противоречит интуиции в отношении SEO и пользовательского опыта.)
Чтобы разделить перенаправление на две части и перенаправить на HTTPS сначала , перед каноническим перенаправлением www, затем сделайте что-то вроде вместо этого:
RewriteEngine On
// 1. Redirect to HTTP to HTTPS on the same host
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
// 2. Canonical redirect from www to non-www
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule (.*) https://example.com/$1 [R=301,L]
Дополнительные примечания о выдаче канонических перенаправлений для списка предварительной загрузки HSTS см. мой ответ на следующий вопрос о профессиональных веб-мастерах stack:
https://webmasters.stackexchange.com/questions/112263/hsts-preload-section-on-htaccess