ASP.net URL Rewrite subdirectory to external URL

被刻印的时光 ゝ 提交于 2021-02-05 09:23:53

问题


I need to URL Rewrite a subdirectory to an external domain.

Example: When visiting "https://example1.com/test", "https://example2.com/hello" should open. The URL should still be "https://example1.com/test".

I tried to solve this by adding a Rewrite rule in web.config, but it don't works. Here is the Rewrite rule I made:

<rule name="TestRule" stopProcessing="true">
  <match url="^test(/.*)?$" />
  <action type="Rewrite" url="https://example2.com/hello" appendQueryString="false" />
</rule>

回答1:


In order to redirect the incoming request to another domain by using Rewrite action type (stay the old URL in the browser address bar), we need to install Application Request Routing module.
https://www.iis.net/downloads/microsoft/application-request-routing
By default, Rewrite action only forwards these requests to the same domain, therefore, we only can specify a URL path in the Rewrite URL field.
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#rewrite-action
Otherwise, Redirecting the incoming request to another domain will cause a 404 error. After we installed the ARR extension, enable Reverse Proxy functionality following the below steps.


Here is an official example.
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing
Finally, please refer to the below configuration.

<rewrite>
    <rules>
        <rule name="Myrules" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{PATH_INFO}" pattern="/test.*" />
            </conditions>
            <action type="Rewrite" url="https://www.bing.com/maps" appendQueryString="false" logRewrittenUrl="false" />
        </rule>
    </rules>
</rewrite>

It will redirect the requests that has “/test” segment to the https://www.bing.com/maps.

If we want to complete the task without installing ARR extension, we have to use Redirect action type. The URL in the browser address bar will change while we access the qualified URL.

<rewrite>
    <rules>
        <rule name="Myrules" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{PATH_INFO}" pattern="/test.*" />
            </conditions>
            <action type="Redirect" url="https://www.bing.com/maps" appendQueryString="false" logRewrittenUrl="false" />
        </rule>
    </rules>
</rewrite>

Feel free to let me know if there is anything I can help with.



来源:https://stackoverflow.com/questions/62330947/asp-net-url-rewrite-subdirectory-to-external-url

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!