2

我想创建一个非常简单的 URL 重写规则。我在本地使用带有 Visual Studio 2010 的 IIS 7 Express (XP)。我创建的规则(从此处的示例复制)在本地完美运行。但是,一旦我将它复制到我的托管服务器,我就会收到 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}&amp;title={R:2}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

假设规则是破坏应用程序的原因,我删除了规则部分,但应用程序仍然抛出 500 错误。但是,如果我完全删除重写部分,则应用程序会正确加载。

所以我的问题是,我的 web.Config 中是否缺少任何内容?他们声称这是一个脚本问题,并且 URL 模块已正确安装并在他们的 IIS 7 服务器上运行。有什么办法可以用脚本来确认吗?

4

1 回答 1

0

我遇到了完全相同的问题,并且花了太多时间尝试与 GoDaddy 支持合作以使 Microsoft URL Rewrite 正常工作。最终,我根据这篇文章启动并运行了 ManagedFusion Rewriter 。

我在启用 SSL 的 GoDaddy 4GH Ultimate Windows 主机上。我在根目录中安装了 WordPress(永久链接现在可以使用!),以及在虚拟目录中运行的其他 .NET 应用程序。

我真的希望这可以帮助某人避免尝试让 Microsoft URL Rewrite 在 GoDaddy Grid Hosting 上工作......

作为记录,这是我对 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" />行。

于 2012-07-18T23:23:05.013 回答