首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写平板电脑和智能手机的url

重写平板电脑和智能手机的url
EN

Stack Overflow用户
提问于 2013-04-22 04:51:54
回答 1查看 2.4K关注 0票数 0

我在用Apache的重写url。.htaccess文件包含以下重定向规则。我的要求是,每当我点击url www.temp.com/card时,基于设备,它应该在内部调用特定的.do

例如,在智能手机上,如果我在内部输入www.temp.com/card,它应该调用www.temp.com/pa/spCard.do

我尝试了下面的规则,但问题是有些平板电脑有安卓系统,所以在平板电脑中,它总是进入智能手机.do

代码语言:javascript
复制
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^card/?$ /pa/spCard.do?uri=$1 [QSA]

RewriteCond %{HTTP_USER_AGENT} "ipad" [NC]
RewriteRule ^card/?$ /pa/tabCard.do?uri=$1 [QSA]

RewriteRule ^card/?$ /pa/webCard.do?uri=$1 [QSA]
</IfModule>

我们有没有办法区分Android手机和平板电脑(使用用户代理字符串)?

EN

回答 1

Stack Overflow用户

发布于 2013-04-22 07:26:31

当检测到设备时,必须通过添加L标志来停止进一步重写。

代码语言:javascript
复制
RewriteRule ^card/?$ /pa/spCard.do?uri=$1 [L,QSA]

而且在重写规则中任何地方都没有捕获到$1。此外,URL始终是card,因此可以将规则简化为

代码语言:javascript
复制
RewriteRule ^card/?$ /pa/spCard.do [L]

代码语言:javascript
复制
RewriteRule ^card/?$ /pa/spCard.do?uri=$0 [L,QSA]

如果您需要uri参数。

当然,tabCard.dowebCard.do也是如此。

要在安卓手机和平板电脑之间保持距离,请参阅用于Android用户代理的Chrome。不幸的是,这并不适用于所有的药片。但至少,您可以通过使用第一条规则指定android.*mobile,用第二条规则指定android来清除某些平板。

代码语言:javascript
复制
RewriteCond %{HTTP_USER_AGENT} android.*mobile|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile [NC]
RewriteRule ^card/?$ /pa/spCard.do?uri=$0 [L,QSA]

RewriteCond %{HTTP_USER_AGENT} android|ipad [NC]
RewriteRule ^card/?$ /pa/tabCard.do?uri=$0 [L,QSA]

有了这些条件,您就会知道第二条规则中有一台平板电脑,第一条规则中有一台电话或平板电脑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16139638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档