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