IIS - URL 重写和子文件夹

问题描述 投票:0回答:1

我是 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 的旧服务器上)

iis url-rewriting
1个回答
0
投票

您可以参考此规则:

<rule name="test">
  <match url="^(.*)$" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^website.com$" />
    </conditions>
  <action type="rewrite" url="server:8080/{R:1}" />
</rule>
© www.soinside.com 2019 - 2024. All rights reserved.