使用MVC4 / IIS7.5重定向到非www-url域

时间:2012-12-01 22:01:51

标签: asp.net-mvc iis web-config

首先,我在Stackoverflow上花了几个小时阅读类似的问题,但似乎没有答案对我有用。

我有一个具有SEO问题的MVC4应用程序:非www未被重定向到www。我在服务器(IIS7.5)和我的本地环境(VS2010)上安装了Rewrite模块。 我尝试了很多方法,但似乎没有办法......

理想情况下,我希望在我的MVC4解决方案中使用重写规则,并避免进行服务器端配置,因为在部署到新服务器时更方便。

我尝试将以下代码块放在web.config中:

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- code added for SEO non-www to www redirect -->
    <rewrite>
      <rules>
        <rule name="Remove WWW prefix" >
          <match url="(.*)" ignoreCase="true" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^domain\.com" />
          </conditions>
          <action type="Redirect" url="http://www.domain.com/{R:1}"
              redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
    <!-- SEO code -->
  </system.webServer>

然后我发布了解决方案(使用正确的域名),但没有任何变化。在尝试访问http://domain.com时,我发现404找不到错误。

我为这部分尝试了几个代码块但它永远不会工作。我也尝试在服务器上配置它,这也不起作用。最好的解决方案是在我的web.config中进行重写,这样每当我发布到新的Web服务器时都会应用规则。

有人看到这个有问题吗?我的web.config位于我的MVC4应用程序中,并通过在VS2010中右键单击解决方案时获得的Publish菜单发布。

非常感谢您的回复。

我也试过这个规则,但它没有改变任何东西..

  <rule name="Redirect to WWW" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^domain.com$" />
  </conditions>
  <action type="Redirect" url="http://www.domain.com/{R:0}" redirectType="Permanent" />
</rule>

0 个答案:

没有答案