web-dev-qa-db-fra.com

Forcer le mode https non-www pour un répertoire et ses sous-dossiers

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?

1
Pasakgroup

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]
1
MrWhite