3

次の URL があります。

domain.fr     (desktop site)
domain.fr/m/  (mobile site)
  • 両方の URL は、「正規」または「代替」を使用して相互に「ポイント」します。
  • これらの URL には問題なくアクセスできます。

モバイル ユーザーを domain.fr/m/ にリダイレクトしたいと考えています。

PHPで、私は試しました:

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bb\d+).+mobile|....',substr($useragent,0,4))){header('Location: http://domain.fr/m/');}

問題 : Google モバイル フレンドリー テストで domain.fr をチェックすると、次のエラー メッセージが表示されます。

ここに画像の説明を入力

(これがモバイル フレンドリーかどうかを Google が確認できないようです)

上記の PHP を削除すると、Google はテストを実行できますが、domain.fr はユーザーフレンドリーではないと言います。

モバイル サイトへのリダイレクトを行う方法は、PHP コードに問題があると思います。

4

3 に答える 3

0

さて、私は解決策を見つけました:

PHP のリダイレクトは正しかったのですが、コードはモバイル サイトとデスクトップ サイトの両方で実行されました。

domain.fr のみリダイレクトを行う必要がありました。そうしないとリダイレクトが無限になり (モバイル サイトでも実行されます)、その結果、Google はこのエラー メッセージ "dismiss" を送信しました.. 理解するのは簡単ではありません..

于 2015-08-23T15:39:20.390 に答える
0

コードにバグがあると思います。Web サーバーのログを分析してみてください。

Google Mobile-friendly test と Google Page Speed でテストしましたが、すべて正常に動作します。

Nginx ログ:

127.0.0.1 - - [22/Aug/2015:16:29:16 +0300] "GET /test.mobile.php HTTP/1.1" 301 18 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
127.0.0.1 - - [22/Aug/2015:16:29:18 +0300] "GET / HTTP/1.1" 200 17211 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12F70 Safari/600.1.4 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

PHP:

$useragent = $_SERVER['HTTP_USER_AGENT'];

$devices = ['iphone', 'android'];
if ( arrayInString( $devices, strtolower( $useragent ) ) ) {
    header("HTTP/1.0 301 Moved Permanently");
    header("Location: http://mysite.ua" . strtolower( $_SERVER['REQUEST_URI'] ) );
    die("Redirect");
}


function arrayInString( $inArray , $inString ) {
    if( is_array( $inArray ) ) {
        foreach( $inArray as $e ) {
            if( strpos( $inString , $e ) !== false )
                return true;
        }
        return false;
    } else {
        return ( strpos( $inString , $inArray ) !== false );
    }
}

ただし、そのようなリダイレクトにはnginxを使用することをお勧めします

于 2015-08-22T13:37:21.970 に答える