1

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

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

理想情况下,我希望在我的 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 not found 错误。

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

有人认为这有什么问题吗?我的 web.config 在我的 MVC4 应用程序中,并通过我们在 VS2010 中右键单击解决方案时获得的发布菜单发布。

非常感谢您的回复。

我也尝试了这个块的规则,但它没有改变任何东西..

  <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>
4

0 回答 0