У меня есть следующие URL:
domain.fr (desktop site)
domain.fr/m/ (mobile site)
Я хотел бы перенаправить людей на мобильный телефон по адресу: 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/');}
Проблема:
Когда я проверяю domain.fr с помощью Google Mobile-Friendly Test, я получаю следующее сообщение об ошибке:
(как будто Google не может проверить, подходит ли это для мобильных устройств)
Если я удалю PHP выше, Google может выполнить тест, но говорит, что domain.fr НЕ удобен для пользователя.
Как сделать перенаправление на мобильный сайт, я думаю, что это проблема с кодом PHP, вы понимаете?
Я думаю, что у вас есть ошибка в вашем коде, попробуйте проанализировать журналы вашего веб-сервера.
У меня есть тест на Google Mobile-friendly тест и в 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 для такого перенаправления
@Julien Во-первых, не закрывайте тег Link!
<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=fr
Вы получили «отклонение» из тестов Google, потому что у вас есть некоторые ошибки в ваших php-перенаправлениях, попробуйте мой редирект ниже
хорошо, я нашел решение:
Перенаправление php было правильным, но код был выполнен как для мобильных, так и для настольных сайтов.
Я должен был сделать перенаправление только для domain.fr, в противном случае перенаправление было бесконечным (выполняется также, когда на мобильном сайте), и, следовательно, Google отправил это сообщение об ошибке «отклонить» .. это было не легко понять ..