Mon site Web racine (example.com
) et son dossier (example.com/folder
) ont deux CMS différents (Opencart pour example.com
et WordPress pour example.com/folder
).
J'utilise ce code dans example.com
pour forcer le mode non-www https:
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
Ce code fonctionne parfaitement pour example.com
et tous ses sous-dossiers attendus pour example.com/folder
avec WordPress CMS.
Que devrais-je faire?
Vous voulez probablement que ces directives s’appliquent également à l’installation de WordPress dans le sous-répertoire - mais il ne fait actuellement rien pour WordPress je suppose?
Ce comportement est attendu si vous avez activé WordPress "jolis" permaliens. Parce que les directives mod_rewrite du fichier WordPress .htaccess
(du sous-répertoire) remplacent complètement les directives mod_rewrite du fichier parent .htaccess
. Les directives mod_rewrite dans le parent .htaccess
ne seront pas traitées.
Vous pouvez utiliser l'héritage mod_rewrite, mais cela dépend des autres directives mod_rewrite que vous avez dans le fichier parent .htaccess
et de la configuration de votre serveur (en particulier la version Apache). En outre, il est probablement avantageux de garder les config OpenCart et WordPress aussi distinctes que possible.
La solution la plus simple consiste à reproduire ces directives au début du fichier .htaccess
dans le sous-répertoire WordPress. Cependant, vous ne pouvez pas simplement les copier sans modification, sinon vous perdrez probablement le sous-répertoire de l'URL redirigée lorsque vous demandez le sous-domaine www
.
Par exemple, essayez ce qui suit en haut du fichier example.com/folder/.htaccess
:
RewriteCond %{HTTP_Host} ^www\.(.*)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]