iis7.5为子虚拟应用程序重写500.52

时间:2012-07-06 15:53:46

标签: url-rewriting iis-7.5 subapplication

我刚从IIS6 svr2003迁移到IIS7.5服务器2008r2并安装了url重写。一切都很好。有问题的网站很大,并在.net 2集成管道下运行。此时无法重做.net 4。我对这个有了全新的了解,而且有点超出我的深度。我真的很想使用重写功能,但我也需要子应用程序。任何帮助将不胜感激。

但是,来自外部供应商的子虚拟应用程序在webconfig的重写部分存在问题。我评论它,子虚拟工作很棒。我在网上看了一下并试了几件事:

<location path="." inheritInChildApplications="false">

<location path="." allowOverride="true" />

缠绕重写模块给我:system.web元素具有无效的子元素位置。

我试过了       在sub虚拟应用程序的webconfig中的system.web下,但即使重写被注释掉 - 这也会出错。 我可以尝试删除,但想知道是否有人可以给我一些关于这个问题的见解。

这是基本的重写:

<rewrite>
  <rules>
    <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
      <match url="^sethsBrochure.pdf$" />
      <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
      </conditions>
      <action type="Redirect" url="path/path/doc.pdf" appendQueryString="false" />
    </rule>
    <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
      <match url="^sethsBrochure$" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="path/path/doc.pdf" />
    </rule>
  </rules>
  <outboundRules>
    <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
      <match filterByTags="A, Form, Img" pattern="^(.*)path/path/doc\.pdf$" />
      <action type="Rewrite" value="{R:1}/ path/path/doc" />
    </rule>
    <preConditions>
      <preCondition name="ResponseIsHtml1">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>

1 个答案:

答案 0 :(得分:0)

正如您所猜测的,最简单的方法是在子应用程序中使用clearremove。例如:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <!-- Insert rules for this application (if any) **below** the "clear" -->
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

但是,正如您在网上找到的那样,您也可以使用location块执行此操作。你尝试过的问题是位置块需要之外的<{1}}块,而不是在其中。

你写的是你试过的:

system.webServer

相反,你需要这样做:

<configuration>
    <system.webServer>
        <location path="." inheritInChildApplications="false">
            <rewrite>
            ...
            </rewrite>
        </location>
    <system.webServer>
<configuration>