Résoudre les problèmes

Une redirection créée depuis cPanel ne fonctionne pas

Vérifié le 4 min de lecture dominios redirecciones

cPanel enregistre les redirections sous forme de règles dans .htaccess. Si elles se trouvent après un bloc qui traite déjà la requête, certains chemins peuvent ne jamais les atteindre. Vérifiez le fichier généré avant de changer l'ordre.

La présence de règles WordPress ou Joomla ne prouve pas qu'il y a un conflit. Testez d'abord l'URL avec curl -I, vérifiez le code et l'en-tête Location, contrôlez l'entrée dans Current Redirects et ouvrez le .htaccess du bon DocumentRoot.

Si la réponse et l'ordre montrent qu'un bloc de l'application absorbe la requête avant qu'elle n'atteigne la redirection, déplacez uniquement la règle concernée pour qu'elle se trouve avant ce bloc. Conservez une copie et respectez les blocs gérés par WordPress, LiteSpeed, les extensions et les outils de sécurité.

Par exemple, une redirection placée après le bloc de WordPress peut ne pas s'exécuter pour les chemins que ce bloc envoie vers index.php :

# BEGIN 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>
# END WordPress

RewriteCond %{HTTP_HOST} ^antiguo\.ejemplo(?::[0-9]+)?$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?\s]*)
RewriteRule ^ https://nuevo.ejemplo/%1 [R=301,L,NE]

Si vous avez confirmé cette interception, placez la redirection hors du bloc géré et avant lui :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^antiguo\.ejemplo(?::[0-9]+)?$ [NC]
RewriteCond %{THE_REQUEST} \s/+([^?\s]*)
RewriteRule ^ https://nuevo.ejemplo/%1 [R=301,L,NE]

# BEGIN 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>
# END WordPress

RewriteEngine On doit apparaître dans ce contexte avant les règles qui en ont besoin, mais ne doit pas forcément être littéralement la première ligne du fichier. Pour forcer le HTTPS, utilisez de préférence cPanel > Domains > Force HTTPS Redirect plutôt que de créer une redirection manuelle.

Les domaines de l'exemple sont des exemples à remplacer : mettez votre origine et votre destination. La condition sur l'hôte limite la règle à l'ancien domaine ; le chemin repris de la requête d'origine conserve ses caractères encodés et la chaîne de requête est maintenue. N'ajoutez pas NE à d'autres règles sans vérifier comment elles construisent la destination.

Testez la page d'accueil, un chemin interne, un chemin avec des accents ou des caractères encodés et un autre avec des paramètres. Vérifiez aussi que le nouveau domaine n'entre pas dans une boucle. Avant de fixer le changement en 301 permanente, vous pouvez utiliser une 302 lors d'un test contrôlé ; confirmez ensuite la réponse sans dépendre d'une redirection mémorisée par le navigateur. Si curl -I donne un résultat différent du navigateur, comparez avec une requête GET : toutes les applications ne répondent pas de la même façon à HEAD.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.