使用 IIS7 将“/”重定向到“/web”

使用 IIS7 将“/”重定向到“/web”

我正在托管一个网站,出于各种原因,我想http://mydomain.com自动重定向到该网站http://mydomain.com/web,同时仍然允许http://mydomain.com/foo.html提供服务。

使用 IIS 7 中的 HTTP 重定向,我似乎创建了一个无限重定向循环。您能给我一些提示吗?

答案1

我假设您只希望重定向对 / 的请求。在这种情况下,请检查 URL 是否为空,然后重定向到 /web/,如以下 web.config 所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to /web" stopProcessing="true">
                    <match url="^$" />
                    <action type="Redirect" url="/web/" redirectType="Found" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

如果您已将整个网站移至 /web/ 下,并希望将每个旧 URL 重定向到 /web/ 下的新 URL(具有匹配文件或目录的 URL 除外),则只需检查所有不以 web/ 开头且不匹配文件和目录的 URL,然后重定向这些 URL:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect to /web" stopProcessing="true">
                    <match url="^web/" negate="true" />
                    <action type="Redirect" url="/web{REQUEST_URI}" appendQueryString="false" redirectType="Found" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

相关内容