【问题标题】:Have a link on mobile website that bypasses the mobile redirect of a .htaccess file on a main website在移动网站上有一个链接,可以绕过主网站上 .htaccess 文件的移动重定向
【发布时间】:2013-04-15 20:24:38
【问题描述】:

我有一个网站的 2 个版本。一个普通的网站和一个 Jquery 移动网站。我运行一个 defaultrewite.php 模板并从 MYSQL 数据库中提取我的内容。

我希望能够在我的移动网站上放置一个链接到主网站?

每次我从移动设备(例如 iphone)访问主网站时,.htaccess 文件都会将我发送到移动网站。

下面是我的 .htaccess 文件的代码。

谢谢

RewriteEngine on
RewriteRule ^/?([a-z0-9-_]*)$ default-rewrite.php?page=$1 [L]
RewriteCond %{REQUEST_URI} !^http://sonae.co.za/.*$
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera   mobile|palmos|webos|symbian|googlebot-mobile" [NC]
RewriteRule ^(.*)$ http://mobile.sonae.co.za/ [L,R=302]

【问题讨论】:

    标签: php html .htaccess


    【解决方案1】:

    在第二个RewriteRule上方添加一行:

    RewriteCond %{QUERY_STRING} !nomobile
    

    然后,您可以通过将其包含在查询字符串中来允许移动设备访问常规站点,例如

    http://sonae.co.za/foo/bar?nomobile
    

    这通过要求查询字符串中不存在该字符串来工作

    【讨论】:

      【解决方案2】:

      让链接通过重定向页面,如果他们点击该链接,则设置一个名为 use_desktop 的 cookie:

      $url = $_GET['redirect_url'];
      setcookie('use_desktop', 1, time() + 60*60*24*30, '/');
      header("Location: $url");
      exit;
      

      然后添加

      RewriteCond %{HTTP:Cookie} !(^|;\ *)use_desktop=([^;\ ]+)
      

      作为重写规则之前的另一个条件。

      这将比查询字符串更好,因为一旦查询字符串消失(即他们点击链接),他们将被重定向回移动版本,这让他们可以继续使用桌面版本,直到他们点击“使用移动链接”,它将通过重定向器并删除该 cookie。

      【讨论】:

      • 您对上述答案的权利。我在上面的 PHP 中遇到错误,说我无法修改第 2 行和第 3 行中的标题,所以我尝试了,我在第 2 行中得到了同样的错误? $url = $_GET['sonae.co.za']; setcookie('use_desktop', 1, time() + 60*60*24*30, '/');回声(“$url”);退出;
      • 你必须确保你还没有回应任何东西来重定向。如果您仍然有问题,您可以将其与其他答案结合使用,使用 ?use_desktop=1 或其他方式直接链接到桌面版本,在这种情况下设置一个 cookie(这样您就可以避免重定向),然后为cookie 和另一个用于 cookie。
      猜你喜欢
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 2017-09-21
      • 1970-01-01
      • 2017-01-28
      相关资源
      最近更新 更多