IIS 7.5 URL重写 - 从URL重写文件夹

Gib*_*boK 11 iis-7 url-rewriting iis-7.5

我使用IIS 7.5和URL重写.

我有一个具有以下文件层次结构的网站:

webroot
webroot/LegacySite
Run Code Online (Sandbox Code Playgroud)

webroot /和legacy /都是IIS中的独立App-Folders.


我需要重写我的网址:

在我的Web.Conf(在webroot文件夹下)不能正常工作,你能指出我缺少的东西吗?

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="MyRole" stopProcessing="true">
                        <match url=".*" />
                        <conditions>
                            <add input="{HTTP_HOST}" pattern="^mysite.com" />
                            <add input="{PATH_INFO}" pattern="^\LegacySite\" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="\LegacySite\{R:0}" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>
Run Code Online (Sandbox Code Playgroud)

Mar*_*urg 17

以下应该有效:

<rule name="MyRole" stopProcessing="true">
    <match url="LegacySite/(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^mysite.com$" />
    </conditions>
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
Run Code Online (Sandbox Code Playgroud)

您可能希望删除检查主机名的条件.这真的很重要吗?您是否有任何其他域名绑定到您不希望重定向发生的网站?这似乎没必要.你可能只需要:

<rule name="MyRole" stopProcessing="true">
    <match url="LegacySite/(.*)" />
    <action type="Rewrite" url="/{R:1}" appendQueryString="true" />
</rule>
Run Code Online (Sandbox Code Playgroud)

我已添加appendQueryString="true"将任何(可选)查询字符串参数传递给重写的URL.