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) и заголовок только в этом случае