2012-12-14 29 views

回答

8

当然可以!您只需查看用户代理并在条件满足时执行重定向。

RewriteEngine On 

RewriteCond %{HTTP_USER_AGENT} "android" [NC] 
RewriteRule ^(.*)$ /android/$1 [L,QSA] 

RewriteCond %{HTTP_USER_AGENT} "iphone|ipod|ipad" [NC] 
RewriteRule ^(.*)$ /ios/$1 [L,QSA] 

让我分解这里发生了什么。首先,我们确保RewriteEngine已打开(v.important)。 RewriteCond这两行是必须满足的条件,这些条件必须符合强制执行的规则。在我们的情况中,条件是在发出请求的设备的用户代理中出现某些关键字。第一个条件匹配单词“android”,第二个匹配任何字符串“iphone”,“ipod”,“ipad”。文本匹配使用regular expressions完成。

每个RewriteCond之后的行是根据其设备执行URL重写(对最终用户来说显示为重定向)的实际规则。该规则表示采取整个请求(再次使用正则表达式)并添加到开头/android/ios。您看到的$1表示正在被重写的实际请求字符串。

  • [NC]意味着匹配是不区分大小写的(无的情况下)。 IE Android == aNdroidIOS == iOS
  • [L]意味着当前规则是最后一个,并且没有其他条件或规则被执行。 如果你只是在寻找的是Android和iOS设备之间的区别,你可以用简单的androidiphone/ipad/ipod逃脱。如果您想要检测特定设备,则必须更具体地匹配其用户代理。
+0

好吧,这是个窍门,现在唯一的问题是它不会加载图像。无法找到解决方案。当我访问链接它确实工作。 – user1904812

+0

@use - 现在试一试,我对代码做了一些小调整。 – Lix

+0

太棒了!你救了我的一天thnx! – user1904812