IIS7 URL ReWrite 模块:强制 root

IIS7 URL ReWrite 模块:强制 root

我们在 IIS7 中有两个站点,均在端口 80 上。一个是我们的实际网站(MAIN),另一个是维护站点(MAINTENANCE),我们在部署新版本的 MAIN 时启动该站点(并停止另一个站点)。

当我们上线维护时,如果您浏览我们的某个子文件夹(即http://维护/product1)您将得到 404。我想使用 URL 重写模块重定向到站点的根目录(http://维护/)。

我可以以基本方式使其工作,但图像和 CSS 不起作用。在其他尝试中,我最终得到了持续的重定向。

这可能吗?

答案1

对于那些通过 Google 到达这里的人来说,我设法让它按照以下规则工作:

<rewrite>
<rules>
        <clear />
        <rule name="Force HTTP" stopProcessing="true">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{HTTPS}" pattern="on" />
            </conditions>
            <action type="Redirect" url="/{R:1}" redirectType="Temporary" />
        </rule>
        <rule name="Allow Local Resources" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
                <add input="{REQUEST_FILENAME}" pattern="SiteMaintenance.png" />
                <add input="{REQUEST_FILENAME}" pattern="Stylesheet.css" />
            </conditions>
            <action type="None" />
        </rule>
        <rule name="Check Is Root" stopProcessing="true">
            <match url="^.+$" negate="false" />
            <conditions logicalGrouping="MatchAny" trackAllCaptures="false" />
            <action type="Redirect" url="/" appendQueryString="false" redirectType="Temporary" />
        </rule>
</rules>
</rewrite>

不知道这是否是最好的方法,但它对我来说很有效。

:)

相关内容