我正在使用htaccess将移动用户从桌面重定向到网站,但我一直在里面获取$ _GET变量

时间:2015-06-08 16:03:20

标签: .htaccess redirect mobile

这个问题可能看起来已经被问到了,我已经看到了所有这些问题,我一直在寻找和尝试许多未经批准的答案和答案。我已经成功地做到了这一点,如果用户转到桌面版本,它将转到移动网站,即使他们去了诸如此类的地方。

www.domain.com/aboutus

它会把他们带到

m.domain.com/?page=aboutus

所以这就是问题所在,而不是它不起作用,但我一直在尝试从重定向“?page =”部分中删除$ _GET变量。

我的.htaccess看起来像......

<IfModule mod_rewrite.c>

    RewriteEngine on

    # if it is not a file or folder, rewrite to index.php?page=<value>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

</IfModule>

<IfModule mod_rewrite.c>

RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^index.php(.*)$ http://m.domain.com/ [QSA,L]

</IfModule>

我尝试使用移植重定向添加请求文件名,但无济于事。有些网站通过使用内置的Google Chrome检查元素实现了9gag,google将用户代理更改为所选的设备(手机),我用它来测试重定向的方式。所以,如果我写9gag.com/hot-它将带我到m.9gag.com/hot而不是m.9gag.com/?page=hot或任何地方。

在此先感谢,我真的为此烦恼。

1 个答案:

答案 0 :(得分:1)

您需要先检查移动重定向,然后需要包含请求URI。

<IfModule mod_rewrite.c>

    RewriteEngine on

    # Redirect mobile requests to the mobile site
    # (but don't redirect when accessing certain directories)
    RewriteCond %{REQUEST_URI} !^/images [NC]
    RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
    RewriteRule ^(.*)$ http://m.domain.com/$1 [R=302,L]

    # If it is not a file or folder, rewrite to index.php?page=<value>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

</IfModule>

您可以通过将302更改为301来永久重定向。