ASP.net MVC站点:将所有"非WWW"请求重定向到WWW

Kar*_*ick 6 asp.net asp.net-mvc seo routing iis-6

最近我将一个ASP.net站点迁移到ASP.net MVC站点.之前有两个主机头,一个是mydomain.com,另一个是www.mydomain.com.我的SEO说你应该只使用一个网址"www.domain.com"来获得SEO优势.

我正在寻找一个选项,可以将所有mydomain.com请求永久重定向到www.mydomain.com.

该站点托管在IIS6中,并在ASP.net MVC 4中开发.

Tom*_*mmy 19

您可以从web.config文件执行此操作

<system.webServer>
    <rewrite>
        <rules>
          <rule name="Redirect to WWW" stopProcessing="true">
            <match url=".*" />
            <conditions>
              <add input="{HTTP_HOST}" pattern="^example.com$" />
            </conditions>
            <action type="Redirect" url="http://www.example.com/{R:0}"
                 redirectType="Permanent" />
          </rule>
        </rules>
    </rewrite>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • @johntrepreneur - 这是使用IIS URL Rewrite模块,只需从应用程序的配置文件中.如果您有IIS 7并且可以使用此方法,则通过IIS管理器控制台或使用web.config应以相同的方式运行.如果使用.NET路由功能,则必须将请求传递到.NET管道,这可能会导致性能略有下降.我只会在无法使用重写模块IMHO的情况下使用.NET路由. (2认同)

Nic*_*ler 5

你可以在IIS中使用config或Url Rewriter,但我找到的最好的方法就是Application_BeginRequest()在你的代码中添加一些代码global.asax.cs:

var HOST = "www.mydomain.com";

if ( !Request.ServerVariables[ "HTTP_HOST" ].Equals(
  HOST,
  StringComparison.InvariantCultureIgnoreCase )
)
{
  Response.RedirectPermanent(
    ( HttpContext.Current.Request.IsSecureConnection ? "https://" : "http://" )
    + HOST
    + HttpContext.Current.Request.RawUrl );
}
Run Code Online (Sandbox Code Playgroud)

因为您在代码中执行此操作,所以您可以基于每个请求获得所需的任何逻辑.


Cra*_*aig 0

不幸的是,URL 重写模块不适用于 IIS6(仅适用于 IIS7 或更高版本)。您是否考虑过创建自己的 HttpModule,类似这样的东西?

IIS 6 如何从 http://example.com/* 重定向到 http://www.example.com/*

或者您可以使用第三方解决方案,例如以下之一:

http://iirf.codeplex.com/

http://www.urlrewriting.net/149/en/home.html

http://www.isapirewrite.com/

http://urlrewriter.net/