【问题标题】:Redirect a site to a Mobile version, error with Google Mobile-Friendly Test将网站重定向到移动版本,Google Mobile-Friendly Test 出错
【发布时间】:2015-08-19 14:54:24
【问题描述】:

我有以下网址:

domain.fr     (desktop site)
domain.fr/m/  (mobile site)
  • 两个网址都使用“canonical”或“alternate”相互“指向”。
  • 我们可以毫无问题地访问这些网址。

我想将移动设备上的人重定向到: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 Mobile-Friendly Test 检查 domain.fr 时,我收到以下错误消息:

(就像谷歌无法检查这是否适合移动设备)

如果我删除上面的 PHP,Google 可以进行测试,但表示 domain.fr 对用户不友好。

如何重定向到移动网站,我认为这是PHP代码的问题,有什么想法吗?

【问题讨论】:

  • 看看detectmobilebrowsers.com 你可以在 nginx 中重定向 - 更快。在 PHP 中插入 exit();在 header('Location:...); 之后
  • 并且,header('Location: domain.fr/m/') 重定向到具体路径,如果你需要重定向整个站点你应该修改原始路径。
  • 我可以建议改用响应式设计(Bootstrap、Foundation、getmdl 等)吗?这个桌面和移动版本是 2000 年代的。
  • 过去,在 2010 年或更早之前,我们不得不为各种设备使用多个版本(wap、桌面、全尺寸、小尺寸等),因为响应式设计仍然未知。我们现在有很好的响应框架来处理这个问题,如果可能的话,不要向后创建多个版本.. :)
  • 确实,移动网站的html与桌面的html完全不同,它服务于不同的目标,两者都针对速度进行了优化,服务于不同的资源,唯一的事情是,seo有什么更好的?我读过文章说这两种变体都没有影响,网站速度仍然很重要,这是真的吗?

标签: php redirect mobile nginx user-friendly


【解决方案1】:

我认为您的代码有错误,请尝试分析您的网络服务器的日志。

我在 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 进行此类重定向

【讨论】:

    【解决方案2】:

    @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

    你从谷歌测试中得到了“dismis”,因为你的 php-redirects 中有一些错误,请在下面尝试我的重定向

    【讨论】:

    • 谢谢,但链接标签不是重定向,它只是避免重复内容,并且在链接标签的末尾,它可以在标签关闭的其他网站上工作(在谷歌示例中这样写)
    • 是的,但是重定向不起作用。试试我写的那个
    • 确实重定向有效,它只是在移动和桌面网站上执行,并且只能在桌面上完成,否则它是无限的......谷歌写了“解雇”,所以你部分对,反正是 php 重定向问题,我会给你那 50 分:)
    【解决方案3】:

    好的,我找到了解决方案:

    php 重定向是正确的,但代码是针对移动和桌面网站执行的。

    我必须只为 domain.fr 进行重定向,否则重定向是无限的(在移动站点上也执行),因此 Google 发送了此错误消息“dismiss”.. 这不容易理解..

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多