PHP移动重定向死循环

时间:2013-07-29 作者:Dave Rottino

我在Wordpress外部的一个子文件夹中构建了一个移动版本,它与我的Wordpress安装在同一台服务器上。我包括wp负载。从WordPress数据库中提取内容的php文件。

如果我打开这个插件(http://wordpress.org/plugins/php-mobile-redirect/), 它进入了一个无休止的循环。

我现在意识到,通过这样做,我也在调用所有活动插件。或者至少我认为我在调用重定向脚本,这导致了无休止的循环。

如果我去正常的地方,http://s168249.gridserver.com/ 在手机上或通过欺骗浏览器,无休止的循环。

如果我去移动网站,http://s168249.gridserver.com/mobile/index.php, 在电话上,无休止的循环。

如果我关闭重定向,我可以顺利地转到移动站点。

当前所有重定向均已关闭

因此,我假设移动重定向脚本的include us wp\\u load。移动索引中的php。php文件是导致问题的原因。

有没有办法只排除这个插件?

http://wordpress.org/extend/plugins/php-mobile-redirect/

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

在您的function.php 添加

add_action(\'init\', \'my_mobile_redirect\');

function get_first_url_subdir() {
  return str_replace( str_replace( array(\'http://\', \'https://\'), \'\', get_site_url() ), \'\', $_SERVER[\'SERVER_NAME\'] . $_SERVER[\'REQUEST_URI\']);
} 

function redirect_mobile_with_cookie() {
  $cookiename = \'redirect_mobile_is_a_mobile_device\';
  if ( isset($_COOKIE[$cookiename]) && ($_COOKIE[$cookiename] == \'yes\') && strpos(get_first_url_subdir(), \'/mobile\') !== 0)
    return true;
  return false;
} 

function my_mobile_redirect(){
  if ( redirect_mobile_with_cookie() ) {
     wp_redirect( get_site_url() . \'/mobile/\');
     exit();
  } elseif  ( strpos(get_first_url_subdir(), \'/mobile\') !== 0 && wp_is_mobile() ) {
    $cookiename = \'redirect_mobile_is_a_mobile_device\';
    setcookie($cookiename, \'yes\');
    wp_redirect( get_site_url() . \'/mobile/\');
    exit();
  }
}
以前的函数与Wordpress配合使用wp_is_mobile 不区分平板电脑和手机的功能。

如果需要区分平板电脑和手机,可以使用脚本Mobile Detect. 下载,放入文件夹。我想这里的semplicityMobile_Detect.php 驻留在主题根目录中。

以下功能正常工作in combination 用上面三个。

function my_adv_mobile_redirect() {
   if ( redirect_mobile_with_cookie() ) {
     wp_redirect( get_site_url() . \'/mobile/\');
     exit();
  } else {
    @include_once( trailingslashit(TEMPLATEPATH) . \'Mobile_Detect.php\' );
    if ( ! class_exists(\'Mobile_Detect\') ) return my_mobile_redirect();
    $detect = new Mobile_Detect;
    // redirects only phones
    if  (strpos(get_first_url_subdir(), \'/mobile\') !== 0 && ($detect->isMobile() && ! $detect->isTablet())) {
      $cookiename = \'redirect_mobile_is_a_mobile_device\';
      setcookie($cookiename, \'yes\');
      wp_redirect( get_site_url() . \'/mobile/\');
      exit();
    }
  }
}
如果要使用此高级函数,只需将前面代码中的init操作替换为:add_action(\'init\', \'my_adv_mobile_redirect\')

SO网友:Mark Davidson

我没有测试过这个,但在index.php 对于您的移动站点,您可以添加

remove_action(\'init\', \'pmr_mobile_redirect\');

理论上,这将禁用重定向插件。

结束

相关推荐

编辑/更改Jetpack Mobile主题

我真的很喜欢为移动设备切换主题的想法,我的网站上有几个功能都使用jetpack,所以我想,为什么不把它也用于移动设备呢。Jetpack附带了一项功能,可以为移动设备切换主题,但只能使用它们的主题并调整一些内容,如bg颜色等。。我想知道是否有可能完全改变这个主题?所以,使用jetpack来检测设备,但使用您自己的移动主题?在任何更新之后都会保持这样。