Microsoft 重写模块 - 在 url 上强制 www 或从 url 中删除 www

Posted

技术标签:

【中文标题】Microsoft 重写模块 - 在 url 上强制 www 或从 url 中删除 www【英文标题】:Microsoft rewriting module - Force www on url Or remove www from url 【发布时间】:2012-04-26 13:48:45 【问题描述】:

我有一个与 Windows Server 2008 和 IIS7.5 共享的主机计划,并且安装并启用了 Microsoft 重写模块。

<rewrite>
    <rules>
        <rule name="myRule" patternSyntax="Wildcard">
            <!--Rewriting code-->
        </rule>
    </rules>
</rewrite>

那么,如何使用 Microsoft 重写模块将 mydomain.com/everywhere-in-site/my-page.html 重定向到 www.mydomain.com/everywhere-in-site/my-page.html?

如果我想将 www.mydomain.com/everywhere-in-site/my-page.html 重定向到 mydomain.com/everywhere-in-site/my-page.html 怎么办?

【问题讨论】:

【参考方案1】:

要从域中删除 www 并重定向到“裸域”,您可以像下面的代码 sn-p 一样进行操作:

<rewrite>
  <rules>
    <rule name="Remove WWW prefix" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions>
        <add input="HTTP_HOST" pattern="^www\.yourdomain\.com$" />
      </conditions>
      <action type="Redirect" url="http://yourdomain.com/R:1" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

反过来(如果您愿意的话)将非 www 重定向到带有 www 的:

<rewrite>
  <rules>
    <rule name="Add WWW prefix" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions>
        <add input="HTTP_HOST" pattern="^yourdomain\.com$" />
      </conditions>
      <action type="Redirect" url="http://www.yourdomain.com/R:0" redirectType="Permanent" />
    </rule>
  </rules>
</rewrite>

redirectType="Permanent" 当然是可选的,但对于 SEO 和大多数情况我会推荐它。

另请参阅这些 SO 问题/答案:

IIS7 URL Rewrite - Add "www" prefix Forwarding http://mydomain.com/ctrlr/act/val to http://WWW.mydomain.com/ctrlr/act/val Proper method to remove www from address using IIS URL Rewrite

【讨论】:

这个答案集中体现了 SO 应该如何。谢谢马丁。

以上是关于Microsoft 重写模块 - 在 url 上强制 www 或从 url 中删除 www的主要内容,如果未能解决你的问题,请参考以下文章

asp.net、url 重写模块和 web.config

iis重写模块实现程序自动二级域名,微软提供的URL重写2.0版本适用IIS以上

在 IIS7 URL 重写模块中,我可以在重定向规则中指定不适用于 http-post 请求吗?

IIS URL 重写使用(Microsoft URL Rewrite Module)

windows2008(64位)下iis7.5中的url伪静态化重写(urlrewrite)

iis url重写模块 是干啥用的