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

时间:2013-04-11 14:50:42

标签: asp.net asp.net-mvc routing seo 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中开发。

4 个答案:

答案 0 :(得分:18)

您可以从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>

答案 1 :(得分:5)

您可以在IIS中使用配置或网址重写器,但我找到的最佳方法就是将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 );
}

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

答案 2 :(得分:0)

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

IIS 6 how to redirect from http://example.com/* to http://www.example.com/*

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

http://iirf.codeplex.com/

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

http://www.isapirewrite.com/

http://urlrewriter.net/

答案 3 :(得分:0)

(需要IIS 7或更高版本)

来自http://www.codeproject.com/Articles/87759/Redirecting-to-WWW-on-ASP-NET-and-IIS

(与上述解决方案类似,但不要求您添加自己的域名。)

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="WWW Rewrite" enabled="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTP_HOST}" negate="true"
                            pattern="^www\.([.a-zA-Z0-9]+)$" />
                    </conditions>
                    <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}"
                        appendQueryString="true" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

请注意,您很可能会在标记下看到波浪线,并显示标记无效的消息。我收到了这条消息,但实际上它运作得很好。

如果您希望intellisense有效,可以在此处尝试此更新...

http://ruslany.net/2009/08/visual-studio-xml-intellisense-for-url-rewrite-1-1/

有关httpRedirect的更多信息,请点击此处...

http://www.iis.net/configreference/system.webserver/httpredirect