【问题标题】:URL rewrite and Re-direct or Classic ASP script to redirect to a mobile siteURL 重写和重定向或经典 ASP 脚本以重定向到移动站点
【发布时间】:2013-05-26 07:03:24
【问题描述】:

我正在尝试在经典 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>

【问题讨论】:

  • 使用 IIS 7.5,您可以使用:stackoverflow.com/questions/15524467/…
  • 这个重定向到特定页面,我需要一些可以重定向所有页面的东西。
  • 编辑后,您写when I access any other pages it goes to a homepage m.example.com,这不是预期的行为吗??
  • 不,如果我访问 mydomain.com/about.asp 应该去 m.mydomain.com/about.asp
  • 所以如果你转到mydomain.com/about.asp,你会被重定向到m.mydomain.com,对吗? (如果是这种情况,我同意这是错误的,因为它应该转到m.mydomain.com/about.asp

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


【解决方案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="^.*$" 将匹配任何 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, like 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>

只有当ipad 不存在时,pattern="^(?!.*ipad).*(midp|mobile|phone).*$" 才会匹配 midp|mobile|phone。 (模式默认不区分大小写)

【讨论】:

  • 这很好用,我如何限制 ipad 用户重定向我不希望 ipad 用户重定向,是否可以使用 URLrewrite?
  • 我正在测试一些东西,如果我找到解决方案,我会更新我的答案!
  • 嘿,感谢您的代码,但它不起作用,它重新定向到移动版本。
  • 如果您在所有要测试的输入上使用pattern="^(?!.*ipad).*(midp|mobile|phone).*$" 会怎样?你能找到你的 ipad 浏览器的用户代理吗?
  • 作为一个测试,如果你只保留一个条件:&lt;add input="{HTTP_USER_AGENT}" pattern="^(?!.*ipad).*(midp|mobile|phone).*$" /&gt;?
猜你喜欢
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多