将文件夹的规则重写到不同的主机
rewrite rule for folder to different host
本地网络上有 2 个应用程序 运行:
主机headers:
http://ui.local, http://api.local
在另一台服务器上,已经为 url 重写设置了一个网站。站点的主机 header 是 http://externalui.mydomain.com
这里是web.config内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://ui.local/{R:1}" />
</rule>
</rules>
</rewrite>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
这个 url 重写规则是 运行 没有问题,并且重写了 http://externalui.mydomain.com 的所有 URL 以转到 http://ui.local
但是我想写另一个规则,所以请求 http://externalui.mydomain.com/api/.... will be forwarded to http://api.local/api/... 而不是。
这个条件怎么写规则?
您可以使用以下规则:
<rule name="redirect api" stopProcessing="true">
<match url="api/(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="http://api.local/api/{R:1}" />
</rule>
<rule name="all redirect" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Redirect" url="http://ui.local/{R:1}" />
</rule>
注意:确保 API 规则应该是第一个规则。
本地网络上有 2 个应用程序 运行:
主机headers: http://ui.local, http://api.local
在另一台服务器上,已经为 url 重写设置了一个网站。站点的主机 header 是 http://externalui.mydomain.com
这里是web.config内容:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://ui.local/{R:1}" />
</rule>
</rules>
</rewrite>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
这个 url 重写规则是 运行 没有问题,并且重写了 http://externalui.mydomain.com 的所有 URL 以转到 http://ui.local
但是我想写另一个规则,所以请求 http://externalui.mydomain.com/api/.... will be forwarded to http://api.local/api/... 而不是。
这个条件怎么写规则?
您可以使用以下规则:
<rule name="redirect api" stopProcessing="true">
<match url="api/(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Redirect" url="http://api.local/api/{R:1}" />
</rule>
<rule name="all redirect" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Redirect" url="http://ui.local/{R:1}" />
</rule>
注意:确保 API 规则应该是第一个规则。