hsts, 301s http www to https:// канонический htaccess

Комментарий 1: я новичок в stackru, я на самом деле не программист, поэтому, пожалуйста, прости меня, если я делаю это неправильно. (Я очень кричу "Черт возьми, Джим, я доктор, а не кодер!" Прямо сейчас)

Комментарий 2: Я пытался сделать свою домашнюю работу, но, поскольку я не программист, у меня возникли проблемы с определением точного ответа на мой вопрос. Если я что-то пропустил, пожалуйста, дайте мне знать, и, надеюсь, это не пустая трата времени.

Конечная цель - ускорить и обезопасить мой сайт. Все должно идти через https.

Я заметил, что тестирование скорости моего (wordpress) сайта было намного быстрее (время загрузки =1-2 с против 5-8 с), если я набрал "https://" прямо в тестере. Водопады указывают на то, что перенаправление http на https занимает много времени (что имеет смысл, поскольку в моем.htaccess в настоящее время вообще нет перенаправления... Я удивлен, что он не потерпел неудачу полностью).

Я надеюсь, что, предоставив перенаправления в.htaccess, скорость моего сайта будет ближе к тому, что я вижу при вводе "https://" напрямую.


Это все привело меня к исследованию HSTS и 301 перенаправления в.htaccess. Кажется, есть много разных способов сделать эти перенаправления, и я не уверен, в чем различия.

Например, это лучше:

RewriteEngine On
RewriteCond !{HTTPS} off
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

</IfModule>

или это (рекомендовано моим хостинг-провайдером)?

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Потом я нашел на варве код для.htaccess https://varvy.com/pagespeed/hsts.html,

и я хотел бы добавить в.htaccess

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains;"
</IfModule>

(не предварительно загружать прямо сейчас), но я не уверен, должно ли это быть вставлено выше или ниже перенаправлений.

И я должен использовать env=https предотвратить любую попытку отправить HSTS через http?

Чтобы усложнить дальнейшее, эта статья, кажется, указывает на то, что у меня должно быть несколько перенаправлений, чтобы все работало правильно во всех сценариях. Статья имеет смысл для меня, как и его предложенная схема перенаправления:

http: // example.com → https: // example.com *
http: // www.example.com → https: // www.example.com * → https: // example.com *
https: // www.example.com → https: // example.com *

Но я не уверен, как реализовать что-то подобное в реальном.htaccess, и я немного нервничаю из-за того, что пытаюсь делать что-то вслепую.

Наконец, мои различные плагины WordPress добавили кучу вещей для кэширования / безопасности в файл.htaccess. Переадресация идет выше или ниже всего этого?

мой канонический (и сертификат ssl) находится в https://example.comпоэтому я бы хотел, чтобы все перенаправления заканчивались там (но сохранялись оставшиеся фрагменты запроса), поэтому example.com/page1 должен перейти на https://example.com/page1

1 ответ

Решение

Ты можешь использовать:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=10886400; includeSubDomains;"
</IfModule>

Только один редирект (http->https без www) и заголовок только в этом случае

Другие вопросы по тегам