我要做什么:
我本质上想使用我的Web服务器通过“子目录”或此实例中称为“站点/子目录”,“站点2 /子目录”的任何名称与网络上的其他服务器和其他端口进行通信。我已经尝试解决这个问题好几天了!我已经在IIS上安装了ARR(并启用了代理)和URL Rewrite模块。
我尝试过上帝知道SO上有多少种不同的重写模板。我可以获得部分成功,其中/ thingx /路由可以解决,但是所有资源都引用blahblahblah.com,并且(适当地)找不到该地址的站点资源。
当前重写(解析 blahblahblah.com/ thing1 中的一些资源,但其他路由错误):
<rewrite>
<rules>
<rule name="Thing1" enabled="true">
<match url="(thing1*)" />
<action type="Rewrite" url="http://localhost:5000/{R:0}" />
</rule>
</rules>
</rewrite>
编辑:根据Microsoft文档Reverse Proxy with URL Rewrite v2 and Application Request Routing中的这篇文章,我将规则更新为以下内容。这些重写据说完全可以满足我的需要,但是对于我来说,结果并不相同,我仍然不知道为什么。
<rules>
<rule name="Thing1" enabled="true">
<match url="^thing1/(.*)" />
<action type="Rewrite" url="https://localhost:5000/{R:0}" />
</rule>
</rules>
<outboundRules>
<rule name="Add application prefix" preCondition="IsHTML">
<match filterByTags="A" pattern="^/(.*)" />
<conditions>
<add input="{URL}" pattern="^/(thing1)/.*" />
</conditions>
<action type="Rewrite" value="/{C:1}/{R:1}" />
</rule>
<preConditions>
<preCondition name="IsHTML">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
更多说明:
localhost:5000
正常工作localhost/thing1
在“ 404未找到”中解决blahblahblah.com/thing1
解决了拉入默认HTML页面的问题,但是没有资产(javascript,css等)返回404 Not Found。 编辑:可能需要注意,这些规则已写入IIS'web.config
的默认站点(绑定到:80,:443)中。在C:\Windows\System32\inetsrv\config\applicationHost.config
中编写这些规则将得到500。
有任何关于我做错事情的反馈吗?
答案 0 :(得分:1)
部分原因是 SPA 的处理方式(# 和历史模式),但我最终解决了以下用于 IIS 的 webconfig,它允许我将所有内容嵌套在 /foobar
端点下:>
<rewrite>
<rules>
<rule name="Subdirectory Index" stopProcessing="true">
<match url="^foobar/index\.html$" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="Subdirectory Routes" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/foobar/index.html" />
</rule>
</rules>
</rewrite>