我需要将子目录 URL 重写到外部域。
示例:访问“ https://example1.com/test ”时,应打开“ https://example2.com/hello ”。URL 仍应为“ https://example1.com/test ”。
我尝试通过在 web.config 中添加重写规则来解决此问题,但它不起作用。这是我制定的重写规则:
<rule name="TestRule" stopProcessing="true">
<match url="^test(/.*)?$" />
<action type="Rewrite" url="https://example2.com/hello" appendQueryString="false" />
</rule>
Run Code Online (Sandbox Code Playgroud)
为了使用重写操作类型将传入请求重定向到另一个域(在浏览器地址栏中保留旧 URL),我们需要安装Application Request Routing模块。
\n https://www.iis.net/downloads/microsoft/application-request-routing
\n默认情况下,重写操作仅将这些请求转发到同一域,因此,我们只能在字段中指定 URL 路径Rewrite URL。
\n https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#rewrite-action
\n否则,将传入请求重定向到另一个域将导致404错误。\n安装 ARR 扩展后,请按照以下步骤启用反向代理功能。
\n
\n
\n这是一个官方示例。
\n https://learn.microsoft.com/en-us/iis/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing
\n最后,请参考到下面的配置。
<rewrite>\n <rules>\n <rule name="Myrules" stopProcessing="true">\n <match url="(.*)" />\n <conditions>\n <add input="{PATH_INFO}" pattern="/test.*" />\n </conditions>\n <action type="Rewrite" url="https://www.bing.com/maps" appendQueryString="false" logRewrittenUrl="false" />\n </rule>\n </rules>\n</rewrite>\nRun Code Online (Sandbox Code Playgroud)\n\n它将具有 \xe2\x80\x9c/test\xe2\x80\x9d 段的请求重定向到https://www.bing.com/maps。
\n
\n如果我们想在不安装 ARR 扩展的情况下完成任务,我们必须使用重定向操作类型。当我们访问符合条件的URL时,浏览器地址栏中的URL会发生变化。
<rewrite>\n <rules>\n <rule name="Myrules" stopProcessing="true">\n <match url="(.*)" />\n <conditions>\n <add input="{PATH_INFO}" pattern="/test.*" />\n </conditions>\n <action type="Redirect" url="https://www.bing.com/maps" appendQueryString="false" logRewrittenUrl="false" />\n </rule>\n </rules>\n</rewrite>\nRun Code Online (Sandbox Code Playgroud)\n\n如果有什么需要我帮忙的,请随时告诉我。
\n| 归档时间: |
|
| 查看次数: |
2304 次 |
| 最近记录: |