【问题标题】:Redirect URL in IIS 7.5IIS 7.5 中的重定向 URL
【发布时间】:2012-01-18 11:55:34
【问题描述】:

我想通过 IIS 重写引擎将所有 www 域裸露。有许多域指向同一个应用程序。

这是我的规则:

^(www.)(.*)$

操作类型:重定向 重定向网址:{R:2} 重定向类型:永久

当我测试 www.xxx.com 的模式时

R:0 => www.stackoverflow.com R:1=> www.stackoverflow.com R:2 => www.stackoverflow.com

这很好。 怎么了?我还应该包括“http://”吗?

【问题讨论】:

  • 我添加了对条件的反向引用。那是你要找的吗?基本上取下第一个周围的括号(或尊重它或计算它)并执行以下操作:^www\.(.+)$(对于 HTTP_HOST)并重定向到 http://{C:1}/ /{R:0}
  • 如果您只是执行 ^www\.(.+)$ 将整个内容与“www”匹配。如果你想具体你可以这样做:^www\.(.+)\.(com|net|org)$ for "com" or "net" or "org"
  • 哦,还要在 action 标签中添加 redirectType="Permanent" 使其永久化.. 哦,应该是 ^www\.(.+\.(com|net|org))$否则您将不得不为第二部分调用 2 个回溯参考

标签: url-rewriting windows-server-2008 iis-7.5


【解决方案1】:

类似 ^(www\.)(.+)$ 的东西在匹配 http_host 时应该可以工作,但最好指定域。根据我对 IIS 的了解(不多)以及它在网上所说的内容,例如:

<rewrite>
    <rules>
        <rule name="Redirect www.xxx.com to xxx.com" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^www\.domain\.com$" />
            </conditions>
            <action type="Redirect" url="http://domain.com/{R:0}" />
        </rule>
    </rules>
</rewrite>

哦,你说的任何域。如果你想确保它以 .com 结尾,它应该类似于

^(www\.)(.+)(\.com)$ 针对 HTTP_HOST

.. 哦,如果你这样做,你需要反向引用,所以试试这样的:

<rewrite>
    <rules>
        <rule name="Redirect www.domain.com to domain.com" patternSyntax="ECMAScript" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
            </conditions>
            <action type="Redirect" url="http://{C:1}/{R:0}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

c:1 是反向引用

【讨论】:

  • 问题是我们的域不是特定的。我们根据 url 从数据库生成内容。所以我想将所有 www 域重定向到裸体。大约有 100 个域指向该站点。这可以更多。所以我不能指定域。有什么建议吗?
  • @daemon 最后更新以包含主机名的其余部分并使其永久化。如果您希望它更具动态性,请阅读正则表达式。
猜你喜欢
  • 2013-12-27
  • 1970-01-01
  • 2011-08-07
  • 2012-05-12
  • 2013-05-02
  • 1970-01-01
  • 2011-09-16
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多