使用htaccess的移动重定向 [英] Mobile Redirect using htaccess

查看:646
本文介绍了使用htaccess的移动重定向的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个网站名为

www.website.org

我有一个名为移动网站

m.website.org

我想用一个htaccess自动主要网站的网址重定向到移动版本。

然而,在该点回主网站称移动版本的链接

www.website.org?noredirect=true

当我点击链接到实际网站的主页上的标志

www.website.org

我不希望用户被允许回手机不小心通过点击主页上的标识。我怎样才能做到这一点通过htaccess的没有JavaScript。

如果不是我虚心地替代选项。

修改

我想我目前正在使用这个通过htaccess的传感移动重定向

  RewriteEngine叙述上
的RewriteBase /

的RewriteCond%{HTTP_USER_AGENT}安卓| AvantGo公司|黑莓|外套|华宝|伊莱恩|非洲小狐| hiptop | iemobile | IP(磨练| OD)|虹膜|点燃| LGE \ |的Maemo | MIDP | MMP |歌剧\ M(OB |在)我|掌(\ OS)?|电话| P(IXI | RE)\ / |包机|口袋| PSP |塞班|的Treo |。达\(浏览器|链接)|沃达丰| WAP WINDOWS \(CE |手机)| XDA | xiino [NC,OR]
的RewriteCond%{HTTP_USER_AGENT} ^(1207 | 6310 | 6590 | 3gso | 4thp | 50 [1-6]我| 770S | 802S | A \ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ | S \ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ U | g560 |基因| GF \ -5 | G \ -mo |去(\ W | OD)| GR(广告| UN)|海阿| hcit | HD \  - (M | P | T)|喜\  - |喜(PT | TA)|马力(\ I | IP)| HS \ -c | HT(C(\  -  | \ | _ | A | G | P | S | T)| TP)|胡(AW | TC)| I \  - (20 |去| MA)| i230 | IAC(\ | \  -  | \ /)| IBRO |理念| ig01 | ikom | im1k | INNO | iPAQ的|虹膜| JA(T |ⅴ) | jbro | jemu |夹具| KDDI |克己| KGT(\ | \ /)| KLON | KPT \ | KWC \  -  |京(C | K)|乐(无|喜)| LG(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |Ø| V)| ZZ)| MT(50 | P1 | V \ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )| WEBC |白衣|无线(G \ |数控| NW)| wmlb |倭奴| X700 | XDA(\  -  | 2 | G)|亚斯\  -  |你| zeto |中兴\  - )[NC]
重写规则^ $ http://m.website.com [R,L]
 

解决方案

我测试位及以下的部分,但不是完整的规则的全部设置,因此,如果您遇到了麻烦,它让我知道,我LL周围挖多一点。但是,假设我得到了一切正确的,你可以尝试类似如下:

  RewriteEngine叙述上

#检查,如果这是noredirect查询字符串
的RewriteCond%{QUERY_STRING}(^ |&安培;)noredirect = TRUE(安培; | $)
#设置一个cookie,并跳过下一条规则
重写规则^  -  [CO = mredir:0:%{HTTP_HOST},S]

#检查,这看起来像一个移动设备
#(你可以添加另一个[OR]为第二个,加入你
#不得不检查,但我相信大多数移动设备应该发送的
#至少这头之一)
的RewriteCond%{HTTP:X-WAP瞩目} ^ $ [OR]!
的RewriteCond%{HTTP:档案} ^ $!
#检查,如果我们不是已经在移动网站
的RewriteCond%{HTTP_HOST}!^ M \。
#检查以确保我们以前没有设置cookie
的RewriteCond%{HTTP:饼干}!\ smredir = 0(; | $)
#现在重定向到移动网站
重写规则^ HTTP://m.example.org% {REQUEST_URI} [R,L]
 

I have a website called

www.website.org

I have a mobile website called

m.website.org

I want to use an htaccess to automatically redirect the main website URL to the mobile version..

However, there is a link on the mobile version that points back to the main website called

www.website.org?noredirect=true

When I click the logo on the home page of the actual website it links to

www.website.org

I don't want the user to be allowed back to mobile accidentally by clicking on the logo on the main page. How can I accomplish this via htaccess without JavaSCript.

If not I am open-minded to alternate options.

EDIT

I think I am currently going to use this for sensing mobile redirect via htaccess

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^$ http://m.website.com [R,L]

解决方案

I tested bits and pieces of the following, but not the complete rule set in its entirety, so if you run into trouble with it let me know and I'll dig around a bit more. However, assuming I got everything correct, you could try something like the following:

RewriteEngine On

# Check if this is the noredirect query string
RewriteCond %{QUERY_STRING} (^|&)noredirect=true(&|$)
# Set a cookie, and skip the next rule
RewriteRule ^ - [CO=mredir:0:%{HTTP_HOST},S]

# Check if this looks like a mobile device
# (You could add another [OR] to the second one and add in what you
#  had to check, but I believe most mobile devices should send at
#  least one of these headers)
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP:Profile}       !^$
# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP:Cookie}        !\smredir=0(;|$)
# Now redirect to the mobile site
RewriteRule ^ http://m.example.org%{REQUEST_URI} [R,L]

这篇关于使用htaccess的移动重定向的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆