web-dev-qa-db-fra.com

Htaccess pour Wordpress défini sur un seul sous-domaine

Situation

  • J'ai un hébergement standard dans OVH (pas VPS) et je peux configurer plusieurs sites Web dans des sous-répertoires différents,
  • Je voudrais installer 2 instances de Wordpress - d'abord dans le répertoire /A et secend dans le répertoire /B
  • Je voudrais que "A" utilise domain.com et "B" utilise subdomain.domain.com

Question

  • Dans ce cas, dois-je utiliser la configuration standard .htaccess pour Wordpress sur un seul domaine dans chaque répertoire Wordpress ou dois-je utiliser une configuration spéciale pour un sous-domaine dans chaque répertoire Wordpress?

Domaine

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

SubDomain

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
  • ou peut-être devrais-je utiliser la version de sous-répertoire de .httaccess?

Sous-dossier

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
2
user3799089

Ma suggestion est la suivante: utilisez la même configuration .htaccess standard pour Wordpress sur un seul domaine dans chaque répertoire Wordpress.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ajoutez à cela un petit CODE pour vous assurer que les utilisateurs sont redirigés vers le bon domaine s'ils accèdent à ce sous-répertoire via un autre domaine:

RewriteCond %{HTTP_Host} !^domain\.com$
RewriteRule ^(.*)$ "https://domain.com/$1" [R=301,L]

Après cela, votre .htaccess pour domain.com sera comme:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} !^domain\.com$
RewriteRule ^(.*)$ "https://domain.com/$1" [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

et pour subdomain.domain.com, ce sera comme:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} !^subdomain\.domain\.com$
RewriteRule ^(.*)$ "https://subdomain.domain.com/$1" [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Les raisons:

  1. L'utilisation de CODE standard est recommandée car il est plus facile de maintenir et de déboguer, car c'est la même chose partout.

  2. Les deux lignes supplémentaires sont recommandées principalement pour SEO. Sans eux, un de vos domaines peut être accessible via un autre domaine. Cela peut soulever une question de contenu en double.

2
Fayaz