用于重定向到移动网站的URL重写和重定向或经典ASP脚本

时间:2013-05-30 15:52:55

标签: iis iis-7 asp-classic url-rewriting

我正在尝试在经典ASP中设置移动重定向脚本来检测HTTP请求,如果是移动设备,它会将请求重定向到该页面的移动版本

所以如果从移动设备打开此链接:

http://www.example.com/about.asp它会重定向http://m.example.com/about.asp

大部分脚本我已经尝试过全部重新定向到移动网站主页,但我需要将其重定向到页面级别。

如果在IIS7.5中这是可行的,我也都是这样。

我得到了这个帮助,

现在我有一个问题,我有几个文件夹,我需要阻止他们重新指导。我有一段代码,文件夹没有被重定向,这是可以的,但当我访问任何其他页面时,它会转到主页m.example.com ....不知道我在这里做错了什么

 <rule name="Mobile Redirect" stopProcessing="true">
     <match url="^(example1|example2|exaple3)/?" ignoreCase="true" negate="true" />
      <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="{HTTP_USER_AGENT}" pattern="^(?!.*ipad).*(midp|mobile|phone).*$" />
        <add input="{HTTP_X-Device-User-Agent}" pattern="midp|mobile|phone" />
        <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="midp|mobile|phone" />
      </conditions>
      <action type="Redirect" url="http://m.example.com/{R:0}" />
    </rule>

1 个答案:

答案 0 :(得分:1)

使用IIS 7.5,您可以使用以下规则:

<rule name="Mobile Redirect" stopProcessing="true">
    <match url="^.*$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="{HTTP_USER_AGENT}" pattern="midp|mobile|phone" />
        <add input="{HTTP_X-Device-User-Agent}" pattern="midp|mobile|phone" />
        <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="midp|mobile|phone" />
    </conditions>
    <action type="Redirect" url="http://m.example.com/{R:0}" />
</rule>
如果符合条件,

url="^.*$"将匹配任何网址并重定向到http://m.example.com发生的请求路径。

如果您不想将此规则应用于iPad,我们将假设iPad用户代理如下(重要的部分是iPad一词):

  

Mozilla / 5.0(iPad; U; CPU iPhone OS 3_2,如Mac OS X; en-us)   AppleWebKit / 531.21.10(KHTML,与Gecko一样)Version / 4.0.4 Mobile / 7B314   Safari浏览器/ 531.21.10

(资料来源:What is the iPad user agent?

然后您可以将规则修改为:

<rule name="Mobile Redirect" stopProcessing="true">
    <match url="^.*$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
        <add input="{HTTP_USER_AGENT}" pattern="^(?!.*ipad).*(midp|mobile|phone).*$" />
        <add input="{HTTP_X-Device-User-Agent}" pattern="midp|mobile|phone" />
        <add input="{HTTP_X-OperaMini-Phone-UA}" pattern="midp|mobile|phone" />
    </conditions>
    <action type="Redirect" url="http://m.example.com/{R:0}" />
</rule>

仅当pattern="^(?!.*ipad).*(midp|mobile|phone).*$"不存在时midp|mobile|phone匹配ipad的位置。 (默认情况下,模式不区分大小写)