La racine de mon domaine redirige avec succès vers un sous-répertoire, ce qui signifie que example.com
redirige vers example.com/abc
.
example.com
n'a pas d'installation WordPress.
example.com/abc
a sa propre installation WordPress.
La page d'accueil sur http://example.com/abc
n'est pas HTTPS et je ne le souhaite pas. Cependant, je souhaite que toutes les sous-pages soient HTTPS (par exemple, https://example.com/abc/xyz
ou https://example.com/abc/thistoo
).
Mon fichier .htaccess
actuel correspond au contenu standard de WordPress ...
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /abc/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abc/index.php [L]
</IfModule>
# END WordPress
J'ai vérifié et essayé de nombreuses autres solutions que j'ai trouvées ici mais jusqu'à présent pas de joie.
p.s. Je sais ré-enregistrer permaliens après avoir apporté de telles modifications au fichier .htaccess
.
Votre fichier .htaccess
se trouve probablement dans le sous-répertoire /abc
? Dans ce cas, vous pouvez utiliser l'une des méthodes suivantes pour forcer HTTPS sur toutes les sous-pages, à l'exception de la page d'accueil:
Cela doit aller tout en haut de votre fichier .htaccess
:
RewriteCond %{HTTPS} !on
RewriteRule !^(index\.php)?$ https://example.com%{REQUEST_URI} [R=302,L]
Cela suppose que le certificat SSL est installé directement sur votre serveur d'applications.
Le modèle négatif RewriteRule
!^(index\.php)?$
ne correspond qu'à un non-vide (ou non index.php
) URL-path, donc cela exclut la page d'accueil.
Modifiez le 302
(temporaire) en 301
(permanent) uniquement lorsque vous êtes sûr que tout fonctionne correctement pour éviter les problèmes de mise en cache. Effacez le cache de votre navigateur avant de le tester.
De plus:
RewriteBase /abc/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /abc/index.php [L]
Puisque vous avez défini la directive RewriteBase
, vous pouvez supprimer le préfixe de répertoire de la substitution RewriteRule
(c'est ce que fait la directive RewriteBase
):
RewriteRule . index.php [L]
Cependant, étant donné que votre fichier .htaccess
se trouve dans le sous-répertoire /abc
, vous n'avez donc pas besoin de la directive RewriteBase
ni du préfixe de répertoire.