web-dev-qa-db-fra.com

301 Rediriger les sous-dossiers du domaine vers les sous-dossiers

J'ai un domaine et un sous-domaine example.com et music.example.com et ils sont tous deux sur le répertoire racine /public_html

Je veux rediriger example.com/music/end/ vers music.example.com/music/end/ mais puisque les deux sont dans le répertoire racine, cela me donne une erreur de redirection.

S'il vous plaît, y a-t-il un moyen de faire la redirection 301 de l'ancienne URL vers la nouvelle sans commettre d'erreur

1

Si le domaine principal et le sous-domaine pointent tous deux vers le même répertoire du système de fichiers, vous devez vérifier l'hôte demandé à l'aide d'une condition mod_rewrite .

Ainsi, par exemple, les directives suivantes doivent être placées avant le contrôleur frontal WordPress (c'est-à-dire avant la section # BEGIN WordPress):

RewriteCond %{HTTP_Host} ^(example\.com) [NC]
RewriteRule ^(music/end/)$ http://music.%1/$1 [R=301,L]

L'utilisation de références arrières dans la substitution RewriteRule sert simplement à empêcher la répétition. %1 est une référence au groupe capturé dans la dernière correspondance CondPattern (c'est-à-dire example.com) et $1 est une référence au groupe capturé dans le modèle RewriteRule (ie. music/end/).

Vous devez utiliser mod_rewrite (par opposition à un mod_alias Redirect) car vous avez probablement des directives mod_rewrite existantes associées à WordPress et il pourrait en résulter des conflits. En outre, vous ne pouvez pas vérifier l'en-tête Host à l'aide de mod_alias.

Vous devrez vider le cache de votre navigateur avant de le tester.

UPDATE: D'après votre commentaire ...

RewriteRule ^ng-music/(.*) https://music.example.com/music/$1 [R=301,L]

Cela fait quelque chose de différent de la redirection "souhaitée", comme indiqué dans votre question. En soi, cela ne devrait pas entraîner une boucle de redirection.

1
MrWhite