首先,我只是在 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>