web-dev-qa-db-ja.com

GoDaddyの301リダイレクト/フォワーディングには奇妙なランダムな仲介者URLがあり、リンクジュースを殺しますか?

ドメイン転送と呼ばれるGoDaddyの301リダイレクトを使用しようとしています。転送DomainA.exampleDomainB.exampleに301「タイプ」として設定しました。

DomainA.exampleは6か月後もGoogleでまだインデックスに登録されており、SERP of DomainB.exampleにタイトルがあります。 Googleでクリックするか、ブラウザでアクセスすると、DomainB.exampleにリダイレクトされるため、UXの観点からはすべて問題ありません。

私はDomainA.examplehttp://www.webconfs.com/redirect-check.php ツールで検査しましたが、 http://DomainA.example/は実際にhttp://DomainA.example/MmSWZ/にリダイレクトします。そして、このURLはおそらくDomainB.exampleにリダイレクトします。それは何ですか?

同じツールで数分後にもう一度確認すると、http://DomainA.example/http://DomainA.example/MpppZ/にリダイレクトされていることがわかります。

SEOにとっては悪いことだと思います。どうすれば修正できますか?

5
Gintas_

GoDaddyによって制御されるいくつかの異なるドメインでこの問題が発生しました。運のない問題を解決するために、GoDaddyサポートに連絡しようと何度か試みました。 GoDaddyは彼らの問題に無知であると思われるため、最終的に私は自分で問題を解決することにしました。

ここに私の解決策があります:このPHPコードを404エラーページの上部に追加します。 WordPressの場合、これにテーマの404.phpファイルを追加します。

<?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();
}
?>

スクリプトは、ランダムな文字を確認して削除し、適切なページにリダイレクトします。いくつかの例外を追加するか、ニーズに合わせてスクリプトを変更する必要がある場合があります。

1
Daniel Chase

301リダイレクトを行うには、指定された場所にサーバーがあり、ブラウザのコンテンツへのリクエストに応答する必要があります。

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

これは、サーバーがHTTP経由でブラウザーに応答する必要があるためです。 DNSの目的ではないため、この種類のリダイレクトはDNSでは実行できません。

DomainA.exampleの値としてDomainB.exampleCNAMEレコードを設定することを検討してください。 DNSゾーンは次のようになります。

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

また、DomainA.exampleMXレコード(ドメインにメールを送信する場所をメールサーバーに通知)がDomainB.exampleのホストを指すように更新されていることを確認する必要があります。それに応じて(必要な場合)。

1
Justin Pearce