1

我目前正在使用以下规则为我的移动网站版本重写 URL:

<rule name="MOBILE example rule" stopProcessing="true" patternSyntax="ECMAScript">
   <match url="^([^/]+)/([^/\.]+)/([^/]+)/([^/]+)/?$" />
   <conditions logicalGrouping="MatchAny" trackAllCaptures="false">                                                                         
      <add input="{HTTP_USER_AGENT}" pattern="mobile|phone" />
      <add input="{HTTP_X-Device-User-Agent}" pattern="mobile|phone" />
      <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="mobile|phone" />                        
   </conditions>
   <action type="Rewrite" url="/mobile/index.php?lang={R:1}&amp;cat={R:2}&amp;brn={R:3}&amp;mdl={R:4}" />
</rule>      

然后,如果用户想要访问网站的“经典”桌面版本,我将“forceNotMobile”cookie 设置为“true”。

问题是......我可以添加什么样的条件来产生这种行为:

  • 如果设置了 cookie,则规则起作用并重写 URL;

  • 否则,如果 cookie 未设置或等于 false,我将停止规则处理而不会重写任何内容;

我想我正在寻找类似的东西:

<add input="{HTTP_COOKIE}" pattern="forceNotMobile=true" negate="true" />

但是“MatchAny”逻辑分组应该是“MatchAll”,这不符合我的“ua-is-mobile”规则。

我可以添加两个<conditions />块吗?

PS。是我检查UA是否移动的方法吗?我该如何改进它?我只希望智能手机被“重写”到我的移动版本。

4

0 回答 0