web-dev-qa-db-fra.com

La redirection / redirection 301 de GoDaddy a une URL étrange d'intermédiaire aléatoire, tue le jus du lien?

J'essaie d'utiliser la redirection 301 de GoDaddy, nommée transfert de domaine. J'ai configuré le transfert DomainA.example vers DomainB.example comme 301 "type".

J'ai remarqué que DomainA.example était toujours indexé dans Google au bout de ~ 6 mois et qu'il avait un titre dans SERP sur DomainB.example. Lorsque je clique dessus sur Google ou que je visite dans le navigateur, il redirige vers DomainB.example, donc tout va bien du point de vue de l'expérience utilisateur.

J'ai inspecté DomainA.example avec l'outil http://www.webconfs.com/redirect-check.php et découvert que http://DomainA.example/ redirige en fait vers http://DomainA.example/MmSWZ/. Et ensuite, cette URL est censée rediriger vers DomainB.example. Qu'est-ce que c'est?

Si je vérifie à nouveau quelques minutes plus tard sur le même outil, je vois que http://DomainA.example/ est redirigé vers http://DomainA.example/MpppZ/, il s’agit donc d’une adresse URL unique au milieu, chaque fois que cela paraît!

Je suis sûr que c'est mauvais pour le référencement. Comment je le répare?

5
Gintas_

J'ai eu ce problème sur plusieurs domaines différents contrôlés par GoDaddy. J'ai tenté à plusieurs reprises de contacter le support technique de GoDaddy pour résoudre le problème sans succès. En fin de compte, j'ai décidé de résoudre le problème moi-même, car GoDaddy ne semble pas au courant de leur problème.

Voici ma solution: Ajoutez ce code PHP en haut de votre page d'erreur 404. Pour WordPress, ajoutez ceci le fichier 404.php de votre thème:

<?php 
/* GoDaddy 404 Redirects FIX - by Daniel Chase - https://riseofweb.com */
$currURL = $_SERVER['REQUEST_URI'];
$CheckRedirectError1 = substr($currURL, -6);
$CheckRedirectError2 = substr($currURL, 0, 7);
$CheckRedirectError = false;
if (preg_match("/^[a-zA-Z]{5}\/$/",$CheckRedirectError1)){
    $CheckRedirectError = $CheckRedirectError1;
}else if (preg_match("/^\/[a-zA-Z]{5}\/$/",$CheckRedirectError2)){
    $CheckRedirectError = substr($CheckRedirectError2, 1);
}
if($CheckRedirectError){
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $redirectTo = str_replace($CheckRedirectError, '', $currURL);
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: " . $protocol . $_SERVER['HTTP_Host'] . $redirectTo);
    exit();
}
?>

Le script recherche les caractères aléatoires et les supprime, puis redirige vers la page appropriée. Vous devrez peut-être ajouter des exceptions ou modifier le script pour répondre à vos besoins.

1
Daniel Chase

Pour effectuer une redirection 301, il doit exister un serveur à l'emplacement spécifié pour répondre à la demande de contenu du navigateur avec un emplacement du type:

HTTP/1.1 301 Moved Permanently
Location: http://domainb.example

Cela est nécessaire car le serveur doit répondre au navigateur via HTTP avec une réponse. Ce type de redirection ne peut pas être effectué avec DNS car ce n’est pas l’objet de DNS.

Vous pouvez envisager de définir un enregistrement CNAME pour DomainA.example avec DomainB.example comme valeur. Votre zone DNS pourrait ressembler à quelque chose comme:

NAME                    TYPE   VALUE
--------------------------------------------------
www.domaina.example.    CNAME  www.domainb.example.
www.domainb.example.    A      192.0.2.23

Vous devez également vous assurer que tous les enregistrements MX (indique aux serveurs de messagerie où envoyer un courrier électronique pour un domaine) pour DomainA.example sont mis à jour pour qu'ils pointent vers l'hôte à DomainB.example afin que le courrier électronique puisse être routé. en conséquence (si nécessaire).

1
Justin Pearce