我正在托管一个网站,出于各种原因,我想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>