我想创建一个非常简单的URL重写规则。我在Visual Studio 2010本地使用IIS 7 Express(XP)。我创建的规则(从示例here复制)在本地完美运行。但是,只要我将其复制到托管服务器,我就会收到500错误。
摘自web.Config:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<rewrite>
<rules>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
</rule>
</rules>
</rewrite>
</system.webServer>
假设规则是破坏应用程序的原因我删除了规则部分,但应用程序仍然会抛出500错误。但是,如果我完全删除重写部分,则应用程序会正确加载。
所以我的问题是,我在网上错过了什么.Config?他们声称这是一个脚本问题,并且URL模块已正确安装并在其IIS 7服务器上运行。有什么方法可以用脚本来确认吗?
答案 0 :(得分:0)
我遇到了完全相同的问题,并花了太多时间尝试使用GoDaddy支持来使Microsoft URL Rewrite工作。最后,我根据this post启动并运行了ManagedFusion重写器。
我在GoDaddy 4GH Ultimate Windows主机上,启用了SSL。我在根目录中安装了WordPress(永久链接正在运行!),以及在虚拟目录中运行的其他.NET应用程序。
我真的希望这可以帮助有人避免尝试让Godaddy Grid Hosting上的Microsoft URL Rewrite工作......
对于记录,这是我对ManagedFusion的重写规则,以正确处理WordPress永久链接:
RewriteEngine On
RewriteBase /
# wordpress admin folder rewrite rules
RewriteCond %{REQUEST_URI} ^wp-admin/
RewriteRule ^wp-admin/(.*) . /wp-admin/$1 [C]
# wordpress includes folder rewrite rules
RewriteCond %{REQUEST_URI} ^wp-includes/
RewriteRule ^wp-includes/(.*) . /wp-includes/$1 [C]
# wordpress general rewrite rules
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /index.php [L]
我使用了逐字链接的帖子中的web.config,但我删除了<defaultDocument enabled="false" />
行。