IIS URL 重写特定站点除外
IIS URL Rewrite except specific site
我有 3 个站点(具有不同的域)托管在一台服务器上,但它们都具有相同的来源和 web.config
。站点 1 和 2 将停止,它们应该重定向到站点 4,但站点 3 将像现在一样工作......
我添加了一个 RewriteMap,其中描述了所有页面重定向和一个使用该映射的规则:
<rewrite>
<rewriteMaps>
<rewriteMap name="My_RewriteMap" defaultValue="localhost/site4/Welcome.aspx">
<add key="/" value="localhost/site4/Welcome.aspx" />
<add key="/default.aspx" value="localhost/site4/Welcome.aspx" />
<add key="localhost/site2" value="localhost/site4/SpecificPage.aspx" />
<add key="/page3.aspx" value="localhost/site4/MyPage.aspx" />
<add key="new-page.aspx" value="localhost/site4/TheNewPage.aspx" />
...
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Redirect rule1 for My_RewriteMap" stopProcessing="true">
<match url=".*" negate="false" />
<conditions>
<add input="{My_RewriteMap:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
此代码适用于地图中描述的页面和默认值(如果地图中不存在特定页面)。
但这会重定向站点 1、站点 2 和站点 3。我不想重定向到站点 3。
Rewrite URL 功能是否可行?
我尝试用
编辑 match
值
<match url="localhost/Site3" negate="true" />
或
<match url="(localhost/Site3).*" negate="true" />
但是两者都不起作用。
谢谢!
我完成了条件的下一个变化:
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" pattern="localhost/Site3" negate="true" />
<add input="{My_RewriteMap:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
对于第一个条件,我说要忽略主机(在 {HTTP_HOST}
变量中)包含站点域的所有请求:localhost/Site3
。
然后,第二个条件适用于地图。
我有 3 个站点(具有不同的域)托管在一台服务器上,但它们都具有相同的来源和 web.config
。站点 1 和 2 将停止,它们应该重定向到站点 4,但站点 3 将像现在一样工作......
我添加了一个 RewriteMap,其中描述了所有页面重定向和一个使用该映射的规则:
<rewrite>
<rewriteMaps>
<rewriteMap name="My_RewriteMap" defaultValue="localhost/site4/Welcome.aspx">
<add key="/" value="localhost/site4/Welcome.aspx" />
<add key="/default.aspx" value="localhost/site4/Welcome.aspx" />
<add key="localhost/site2" value="localhost/site4/SpecificPage.aspx" />
<add key="/page3.aspx" value="localhost/site4/MyPage.aspx" />
<add key="new-page.aspx" value="localhost/site4/TheNewPage.aspx" />
...
</rewriteMap>
</rewriteMaps>
<rules>
<rule name="Redirect rule1 for My_RewriteMap" stopProcessing="true">
<match url=".*" negate="false" />
<conditions>
<add input="{My_RewriteMap:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
此代码适用于地图中描述的页面和默认值(如果地图中不存在特定页面)。 但这会重定向站点 1、站点 2 和站点 3。我不想重定向到站点 3。 Rewrite URL 功能是否可行? 我尝试用
编辑match
值
<match url="localhost/Site3" negate="true" />
或
<match url="(localhost/Site3).*" negate="true" />
但是两者都不起作用。
谢谢!
我完成了条件的下一个变化:
<conditions trackAllCaptures="true">
<add input="{HTTP_HOST}" pattern="localhost/Site3" negate="true" />
<add input="{My_RewriteMap:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
对于第一个条件,我说要忽略主机(在 {HTTP_HOST}
变量中)包含站点域的所有请求:localhost/Site3
。
然后,第二个条件适用于地图。