Перенаправление 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

Author: JakeDD, 2017-12-24

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

 3
Author: MrWhite, 2018-01-25 17:56:04