我是 URL 重写新手,因此非常感谢您的帮助。 我目前的情况是,我设置了一个子域,当前正在重写该子域以指向内部服务器(反向代理)。这很好用。
问题是当我尝试访问子文件夹时。 例如, www.website.com 返回相应的默认文档,但 www.website.com/subfolder/doc.html 仍返回来自 www.website.com
的默认文档以下是该站点的 web.config 文件的内容。我按照 mircrosoft 网站上一篇文章的说明做了这个。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://192.168.1.12:8081/(.*)" />
<action type="Rewrite" value="http{R:1}://www.website.com/{R:2}" />
</rule>
<rule name="RestoreAcceptEncoding" preCondition="NeedsRestoringAcceptEncoding">
<match serverVariable="HTTP_ACCEPT_ENCODING" pattern="^(.*)" />
<action type="Rewrite" value="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" />
</rule>
<rule name="CustomAnchorHref" preCondition="ResponseIsAnything">
<match filterByTags="None" pattern="href=(.*?)http://192.168.1.12:8081/(.*?)\s" />
<action type="Rewrite" value="href={R:1}https://www.website.com/{R:2}" />
</rule>
<rule name="CustomFormAction" preCondition="ResponseIsAnything">
<match filterByTags="None" pattern="action=(.*?)http://192.168.1.12:8081/(.*?)\\" />
<action type="Rewrite" value="action={R:1}https://www.website.com/{R:2}\" />
</rule>
<preConditions>
<preCondition name="NeedsRestoringAcceptEncoding">
<add input="{HTTP_X_ORIGINAL_ACCEPT_ENCODING}" pattern=".+" />
</preCondition>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
<preCondition name="ResponseIsAnything">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/(.+)" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<action type="Rewrite" url="http://192.168.1.12:8081/" />
<serverVariables>
<set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
<set name="HTTP_ACCEPT_ENCODING" value="eee" />
</serverVariables>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
一如既往,感谢任何帮助。 (如果有什么区别的话,这是在运行 IIS 8 的旧服务器上)
您可以参考此规则:
<rule name="test">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^website.com$" />
</conditions>
<action type="rewrite" url="server:8080/{R:1}" />
</rule>