Mon site est un site wordpress. Si un utilisateur atterrit sur http://www.example.com/subfolder (non-ssl), il est redirigé par erreur vers https://www.example.com (ssl mais sans le sous-dossier). Comment puis-je arrêter cela? Ils doivent rester dans le sous-dossier après avoir été redirigés vers https://.
J'utilise le plugin SSL Really Simple dans Wordpress. Mon fichier .htaccess contient ce code :
#BEGIN ReallySimpleSSL
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /subfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /subfolder/index.php [L]
</IfModule>
Je n'ai jamais été génial en éditant le fichier .htaccess. Toute aide serait appréciée!
EDIT : ........ Mon fichier .htaccess est situé dans le sous-dossier. Il existe un autre fichier .htaccess situé à la racine, ainsi qu'un autre site Web. J'essaie de garder les utilisateurs du sous-dossier dans le sous-dossier. * J'ai ajouté un deuxième IfModule au code ci-dessus. Le .htaccess à la racine contient ce code :
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Fonctionnant dans une nouvelle fenêtre de navigateur, que je n'ai pas encore utilisée, j'obtiens les mêmes résultats.
Le problème le plus probable est cette règle que vous avez implémentée au-dessus du fichier de configuration dans le sous-dossier :
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Il est appliqué avant toute autre chose dans le sous-dossier et il réécrit inconditionnellement toutes les requêtes non-ssl vers ssl. Le problème ici :
Le modèle de capture ^(.*)$
est appliqué au chemin relatif dans les demandes, c'est-à-dire uniquement la section du chemin à partir du sous-dossier sur lequel se base. C'est ainsi que les règles des fichiers de configuration distribués sont appliquées, ceci est clairement documenté. C'est en fait l'une des raisons pour lesquelles les fichiers de configuration distribués ajoutent beaucoup de complexité et causent tant de problèmes...
Ainsi, à la place, vous devrez soit implémenter la redirection https au niveau supérieur, soit utiliser le chemin absolu ou ajouter manuellement le sous-dossier à la cible de redirection. J'irais avec la deuxième option:
RewriteRule ^ https://%{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