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
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.