2016-10-20 2 views
2

Commentaire 1: Je suis nouveau à stackoverflow, je ne suis pas vraiment un programmeur, alors s'il vous plaît pardonnez-moi si je me trompe. (Je crie beaucoup "dammit Jim, je suis un docteur pas un codeur!" Maintenant)hts, 301s http www à https: // canonical htaccess

Commentaire 2: J'ai essayé de faire mes devoirs, mais dans la mesure où je ne suis pas un programmeur, j'ai eu du mal à trouver la réponse exacte à ma question. Si j'ai raté quelque chose, s'il vous plaît faites le moi savoir, et j'espère que ce n'est pas une perte de temps pour n'importe qui.

Le but ultime est d'accélérer et sécuriser mon site web. Tout devrait aller sur https. J'ai remarqué que mon test de vitesse de site Web (wordpress) était beaucoup plus rapide (temps de chargement = 1-2s vs 5-8s) si je tapais "https: //" directement dans le testeur. Les cascades indiquent qu'il faut beaucoup de temps pour obtenir la redirection http vers https (ce qui est logique car il n'y a actuellement aucune redirection répertoriée dans mon .htaccess ... Je suis surpris que cela ne manque pas complètement). J'espere en fournissant des redirections dans le .htaccess, la vitesse de mon site sera plus proche de ce que je vois en tapant directement "https: //".


Tout cela m'a conduit à étudier les redirections HSTS et 301 dans .htaccess. Il semble y avoir BEAUCOUP de manières différentes de faire ces redirections, et je ne suis pas sûr quelles sont les différences.

Par exemple, est-ce mieux:

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> 

ou cela (recommandé par mon fournisseur d'hébergement)?

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

Je trouve sur varvy le code pour .htaccess https://varvy.com/pagespeed/hsts.html.

et je voudrais ajouter à .htaccess

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

(précharger pas maintenant) mais je ne sais pas si cela devrait être inséré au-dessus ou en dessous des réoriente.

Et dois-je utiliser env=https pour empêcher toute tentative d'envoyer le HSTS sur HTTP?

Pour compliquer davantage, this article semble indiquer que je devrais avoir plusieurs redirections pour que le tout fonctionne correctement dans tous les scénarios. L'article me semble logique, comme son système de redirection proposé:

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

Mais je ne suis pas sûr mettre en œuvre quelque chose comme ça dans le. Htaccess réel et je suis un peu nerveux d'essayer simplement des choses à l'aveuglette. Enfin, mes différents plugins wordpress ont ajouté un tas de trucs de mise en cache/sécurité au fichier .htaccess. Est-ce que les redirections vont au-dessus ou au-dessous de tout cela?

mon canonique (et le certificat ssl) est à https://example.com, donc je voudrais mettre fin à toutes les redirections là-bas (mais en conservant les limaces restantes de la demande), donc example.com/page1 devrait aller à https://example.com/page1

Répondre

1

Vous pouvez utiliser:

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> 

un seul redirect (type HTTP> https sans www) et en-tête seulement dans ce cas

+0

Merci de répondre. J'essaie de comprendre. La première condition redirigerait toute chaîne contenant "www. {String}" vers https: // {string}? et la deuxième condition redirigerait tout non https à https? –

+0

Oui, c'est exactement ça – Croises