Перенаправление сайта на мобильную версию, ошибка с помощью теста Google для мобильных устройств


У меня есть следующие 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 для мобильных устройств я получаю следующее сообщение об ошибке:

enter image description here

(похоже, что Google не может проверить, является ли это мобильным дружелюбный)

Если я удалю PHP выше, Google может выполнить тест, но говорит domain.fr не является удобным для пользователя.

Как сделать перенаправление на мобильный сайт, я думаю, что это проблема с PHP-кодом, есть идеи?

Author: Julien, 2015-08-19

3 answers

Я думаю, что у вас есть ошибка в коде, попробуйте проанализировать журналы вашего веб-сервера.

У меня есть тест в Google Mobile-дружественном тесте и в скорости страницы Google, все работает нормально.

Журналы 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 для такого перенаправления

 0
Author: Aleksey Solomakha, 2015-08-22 13:37:21

@Julien Во-первых, не закрывайте тег ссылки!

<link rel="alternate" href="http://luckeo.fr/m/" media="only screen and (max-width: 640px)">

Альтернативная "ссылка" - это просто SEO-ссылка, она не перенаправляет ни одного пользователя. И вы должны перенаправить Google и других пользователей на мобильную версию. Прочитайте эту статью: https://developers.google.com/webmasters/mobile-sites/mobile-seo/common-mistakes/faulty-redirects?hl=фр

Вы получили "отказ" от тестов Google, потому что у вас есть некоторые ошибки в ваших php-перенаправлениях, попробуйте мой редирект ниже

 0
Author: Aleksey Solomakha, 2015-08-23 15:17:31

Хорошо, я нашел решение:

Перенаправление php было правильным, но код был выполнен как для мобильных, так и для настольных сайтов.

Мне пришлось сделать перенаправление только для domain.fr, в противном случае перенаправление было бесконечным (выполнялось также на мобильном сайте), и, следовательно, Google отправил это сообщение об ошибке "отклонить".. это было нелегко понять..

 0
Author: Julien, 2015-08-23 15:39:20