【问题标题】:IIS 7 URL Rewrite rules aren't being applied未应用 IIS 7 URL 重写规则
【发布时间】:2011-05-07 06:16:21
【问题描述】:

我有一个托管在 IIS7 服务器上的 .net 4.0 Web 应用程序。

阅读此内容后:http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/ 关于从另一台服务器提供静态内容,以便不会在每次请求静态文件时发送 cookie,我尝试了一下,但没有太大成功。

这是写在web.config文件中的部分:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="images" stopProcessing="true">
                <match url="^images/(.*)$" />
                <action type="Rewrite" url="http://static-server.com/images/{R:1}" appendQueryString="true" logRewrittenUrl="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

定义此规则后,指向图像文件夹中文件的每个链接都应重写到静态服务器 URL。但这根本不起作用,现在 images 文件夹中的每个图像都返回 404 not found。关于可能导致此行为的原因或关于如何从不同服务器的特定文件夹提供文件的不同解决方案的任何想法,而无需处理大量代码并更改所有链接以链接到静态服务器?

我也尝试过使用 Redirect 操作类型而不是 Rewrite 操作,这确实有效,但它违背了我尝试在不同服务器上提供文件的原因(这样请求被发送到我的动态具有所有必需 cookie 的内容服务器,并被重定向到静态服务器,这实际上比从动态内容服务器提供图像更糟糕)。

【问题讨论】:

    标签: asp.net iis-7 url-rewriting url-rewrite-module


    【解决方案1】:

    我认为仅凭该规则无法为您解决此问题。它可能不会重写发送给用户的页面中的链接。

    您链接到的文章建议您“与IIS Application Request Routing module 一起”执行此操作。实际更改发送到客户端的文件中的链接的是路由模块。

    【讨论】:

    • 我在learn.iis.net/page.aspx/485/…learn.iis.net/page.aspx/484/… 之后安装了“应用程序请求路由”模块,但没有得到肯定的结果。只有这样我才得到 404 而是 500。也许我配置 ARR 模块的方式有问题?
    • 肯定是 ARR 模块导致了问题,但我似乎无法配置它。决定采用不同的方法(手动更改一些所需资源的路径),直到我找出如何正确配置模块。当我找出导致问题的原因时,我会用我所做的更新我的帖子。
    • Atzoya 你解决过这个问题吗?我遇到了与您完全相同的问题。我猜应该可以重写/转发到不同的域。我还安装了 ARR 并正在对其进行调整,但我不明白为什么我需要按照@MichaelHaren 的建议重写链接才能使其正常工作。这只需要在页面中返回正确的链接,但我得到了一个完整的页面 404 错误,一个带有不正确链接/锚的页面已经是一个很大的改进:)。
    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多