La redirection de site Web fonctionne par intermittence dans Firefox mais ne fonctionne pas du tout dans IE [dupliquer]
Après quelques tentatives d'erreur dans la redirection de site Web, j'arrive à effectuer la redirection de site Web mais cela fonctionne par intermittence dans Firefox mais ne fonctionne pas du tout dans IE. J'arrive à vider tout le cache et à réessayer dans Firefox et cela fonctionne, mais bizarrement, cela ne fonctionne pas après cela. J'ai confirmé que je n'effectuais aucune modification sur aucun fichier à ce moment-là. Quelqu'un a-t-il déjà eu une idée ou fait face à cela? J'étais tellement heureux que mon site Web redirige enfin même si j'étais heureux comme 2 minutes, puis il s'est avéré qu'il n'était plus redirigé. : ((J'en ai juste besoin pour rediriger lorsque je tape http://example.com, il redirige vers https://www.example.com Voici ma redirection dans le fichier .htaccess:
RewriteEngine On
#Options +FollowSymLinks
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$[OR] RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Voici mes journaux:
init rewrite engine with requested uri /
pass through /
[perdir D:/wamp64/www/example/] strip per-dir prefix: D:/wamp64/www/example/ ->
[perdir D:/wamp64/www/example/] applying pattern '.*' to uri ''
[perdir D:/wamp64/www/example/] RewriteCond: input='off' pattern='!on' => matched
[perdir D:/wamp64/www/example/] RewriteCond: input='www.example.com' pattern='^www\\.example\\.com$' => matched
[perdir D:/wamp64/www/example/] rewrite '' -> 'https://www.example.com/'
[perdir D:/wamp64/www/example/] explicitly forcing redirect with https://www.example.com/
[perdir D:/wamp64/www/example/] escaping https://www.example.com/ for redirect
[perdir D:/wamp64/www/example/] redirect to https://www.example.com/ [REDIRECT/301]
J'ai également constaté que mon site Web ne redirige que lorsque je me déconnecte du VPN (j'ai besoin d'un VPN pour pouvoir me connecter au serveur pour réparer ou obtenir les informations que j'ai faites pour la redirection)
Voici l'élément que j'ai ajouté dans le fichier .htaccess:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{HTTP_HOST] ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Voici mon httpd-vhosts.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
Mon certificat SSL a été configuré dans httpd-ssl.conf donc je pointe mon httpd-vhosts.conf comme VirtualHost *: 80 Voici mon httpd-vhosts.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
Mise à jour
Voici ce que je mets à jour dans .htaccess en ajoutant [OU]:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Et ci-dessous sont les journaux que j'ai obtenus:
strip per-dir prefix: D:/wamp64/www/example/ ->
applying pattern '.*' to uri ''
RewriteCond: input='off' pattern='!on' => matched
rewrite '' -> 'https://www.example.com/'
explicitly forcing redirect with https://www.example.com/
escaping https://www.example.com/ for redirect
redirect to https://www.example.com/ [REDIRECT/301]
Je l'ai réessayé dans le navigateur mais il n'a pas été redirigé. J'essaie également de déboguer dans Firefox et l'hôte que j'ai obtenu est example.com
C'est ce que j'ai obtenu en supprimant [OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Journaux:
RewriteCond: input='off' pattern='!on' => matched
RewriteCond: input='www.example.com' pattern='^example\\.com$' => not-matched
S'il vous plaît, dites-moi que ma redirection fonctionne parce que je travaille dans ce domaine depuis des mois et que je ne suis plus d'idée maintenant (j'espère que ce n'est pas à cause de ma stupide erreur ... prier!). S'il vous plaît aidez-moi et merci d'avance!
Réponses
Je crois que vous ne voulez pas vraiment cette condition:
RewriteCond %{HTTP_HOST} ^www\.example\.com$
Parce que cela provoquerait une boucle de redirection infinie vers lui-même, étant donné que cela vient du .htaccessqui s'applique également à la https://wwwversion:
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Je crois que c'est un caractère d'espace manquant. Veuillez changer ceci:
RewriteCond %{HTTP_HOST} ^example\.com$[OR]
pour ça:
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
Vos entrées de fichier journal ont prouvé que http://www.example.com a été réécrit avec succès en https://www.example.com/ . Ils n'ont rien prouvé sur http://example.com . L'ajout du caractère espace devrait corriger ce dernier.
Au lieu de cela, mod_rewritevous devriez utiliser quelque chose comme ça dans la définition de Virtualhost:
ServerName www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com/
Selon la documentation Apache httpd .
mod_rewrite doit être considéré comme un dernier recours, lorsque d'autres alternatives sont jugées insuffisantes. Son utilisation lorsqu'il existe des alternatives plus simples conduit à des configurations déroutantes, fragiles et difficiles à maintenir.