Oh mon Dieu, j'ai essayé cela un million de fois, un million de façons différentes d'utiliser Stackoverflow, d'utiliser des blogs, mon hébergeur l'a même fait à un moment donné, sans succès, ou peut-être que ma manipulation de la mise en cache l'a cassé.
Je veux rediriger tout le trafic HTTP:// vers https, cela dissuade les gens d'acheter.
C'est donc le contenu du fichier, qu'est-ce qui doit changer ???
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
AddHandler server-parsed .html .htm
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilter DEFLATE .shtml
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.pottertour.co.uk/$1 [R,L]
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 10 days"
ExpiresByType text/html "access plus 1 day"
ExpiresByType text/css "access plus 0 day"
ExpiresByType text/plain "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-icon "access plus 1 year"
</IfModule>
# END EXPIRES
OK, j'ai essayé de supprimer les <IfModule mod_rewrite.c>
wrappers selon le commentaire de MrWhite, et cela a semblé mettre le chargement dans une boucle constante. Je l'ai donc remis à ce qu'il était auparavant, mais sans les emballages. Comme ci-dessous.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^pottertour.co.uk [NC]
RewriteRule ^(.*)$ https://www.pottertour.co.uk/$1 [L,R=301]
Solutions et explications bien appréciées.
OK eh bien grâce à MrWhite j'ai eu une autre chance, l'ensemble du fichier .htacess se trouve maintenant à ceci:
AddType text/html .shtml
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes
AddHandler server-parsed .html .htm
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilter DEFLATE .shtml
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 10 days"
ExpiresByType text/html "access plus 1 day"
ExpiresByType text/css "access plus 10 day"
ExpiresByType text/plain "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-icon "access plus 1 year"
</IfModule>
# END EXPIRES
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Remarque J'ai supprimé toutes les références à une redirection permanente en omettant le R=301
J'ai de toute façon défini une URL https:// canonique sur toutes les pages, donc je pense que l'ajout à .htaccess n'aide pas beaucoup.
Il n'accède toujours pas à mes styles.css ou ne télécharge pas les polices Google. Le navigateur ne s'exécute pas non plus correctement sur les accordéons javascript de la page (comme c'est bizarre d'être intégré à la page !)
J'ai contacté 1&1 mon hébergeur et je lui ai demandé de s'assurer que le fichier .htacess est « actualisé »... Je vais partir à la recherche de Cloudfare.
Vos modifications/commentaires n'aident pas vraiment malheureusement. Cependant, après avoir jeté un rapide coup d'œil à votre site, vous sembleriez utiliser Cloudflare (qui agit comme un proxy devant votre serveur d'applications), auquel cas vous devrez faire quelque chose comme ce qui suit à la place pour rediriger HTTP vers HTTPS :
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Vous n'avez pas besoin de l' <IfModule>
emballage.
Vous devez d'abord tester avec une redirection 302 (temporaire) pour éviter les problèmes de mise en cache et ne passer à une redirection 301 (permanente) qu'une fois que vous avez confirmé qu'elle fonctionne comme prévu. Les 301 sont mis en cache de manière persistante par le navigateur, ce qui peut rendre les tests problématiques.
Vous devez vider le cache de votre navigateur avant de tester.
Cela ne canonise pas le sous-domaine www/non-www.
MISE À JOUR : J'ai remarqué que bien que la redirection ci-dessus fonctionne maintenant, vous n'envoyez que des demandes de sous-domaine www via Cloudflare. Les requêtes pour le domaine apex (c.-à-d. example.com
) vont directement à votre serveur d'origine (Apache) et ne sont donc pas redirigées par la règle ci-dessus.
Tout (ou rien ) doit être envoyé via Cloudflare, il s'agit donc vraiment d'un problème de configuration DNS. Cependant, nous pouvons résoudre ce problème en implémentant une redirection non-www vers www .htaccess
avant la redirection HTTP vers HTTPS ci-dessus. (Je suppose que www est l'URL canonique préférée ?)
Par exemple:
RewriteEngine On
# Redirect non-www to www (and HTTPS)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Redirect HTTP to HTTPS (Cloudflare)
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Notez que la règle précédente (HTTP vers HTTPS) est désormais la deuxième.
Cela suppose que vous n'avez pas d'autres sous-domaines. c'est à dire. example.com
et www.example.com
seulement. Si vous avez d'autres sous-domaines, vous pouvez décider de coder en dur le domaine dans la première règle (similaire à ce que vous avez fait précédemment), par exemple :
# Redirect non-www to www (and HTTPS) - domain hardcoded
RewriteCond %{HTTP_HOST} =example.com
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots