J'ai un WordPress configuration multisite avec des sous-domaines. J'ai pointé cinq sous-domaines à cela. J'ai également installé SSL sur le domaine principal et les autres sous-domaines.
J'ai écrit le code de redirection ci-dessous pour rediriger le domaine principal non www vers le site www et tous les domaines (domaine principal + sous-domaines) vers https.
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Jusque-là, ça va.
Mais, quand je vais à n'importe quelle URL 404 comme https://www.example.com/any-404-page
, il me redirige vers https://www.example.com/www.example.com
et il retourne ERR_TOO_MANY_REDIRECTS
Cela se produit-il à cause de mon code .htaccess?
J'ai écrit le code de redirection ci-dessous pour rediriger le domaine principal non www vers le site www et tous les domaines (domaine principal + sous-domaines) vers https.
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC] RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Ceci est peut-être un problème pour votre problème immédiat, cependant, ce code ne fait pas ce que vous dites. En réalité, ce code ne fait rien du tout pour les sous-domaines, comme vous semblez le suggérer!?
Plus précisément...
RewriteCond %{HTTP_Host} !^(.*)\.(.*)\. [NC]
Cette condition ne réussira jamais pour aucun sous-domaine ni pour un domaine qualifié complet (tous les noms d'hôte valides, à l'exception du domaine principal dans le cas de TLD à un seul niveau, auront au moins 2 segments de points), donc la RewriteRule
suivante ne sera jamais traitée.
RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_Host}%{REQUEST_URI} [L,R=301]
Cela redirige toujours HTTP vers HTTP et HTTPS vers HTTPS, il ne redirige pas HTTP vers HTTPS. Si vous en avez besoin, vous devez coder en dur la s
la substitution, comme @Stephen l'a suggéré dans les commentaires.
C'était à cause de NOBLOGREDIRECT
constante dans WordPress. J'avais défini la NOBLOGREDIRECT
comme www.example.com
, donc si cette URL n'existe pas, elle est redirigée vers https://www.example.com/www.example.com
.
J'ai changé NOBLOGREDIRECT
de www.example.com
à https://www.example.com
et maintenant, il est redirigé vers la page d'accueil.