IIS URL 重写 - 将子文件夹重写为页面

IIS URL 重写 - 将子文件夹重写为页面

全部,

我花了几乎一天的时间才弄清楚。经过所有的搜索,我现在很无助,想向社区寻求帮助。

我想根据以下规则重定向我网站上的所有流量

https://www.test.com/abc ->https://www.test.com/test1.aspx?c=abc
https://www.test.com/def ->https://www.test.com/test1.aspx?c=def

子文件夹需要作为查询字符串传递

我已尝试过,但似乎不起作用。

<rule name="Reditect1" stopProcessing="true">
                    <match url="^(.*)test.com/(.*)" />
                    <conditions>
                        <add input="{R:2}" pattern="^[a-zA-Z0-9_]*$" />
                    </conditions>
                    <action type="Redirect" url="/test.aspx?c={C:0}" appendQueryString="true" />
                </rule>

非常感谢您的帮助

答案1

因此,经过更多的研究和反复尝试,我终于找到了答案。以下是我现在的设置方法。

 <rule name="Redirect1" stopProcessing="true">
        <match url="^(.*)$" />
            <conditions>
                <add input="{R:0}" pattern="^(?!\s*$).+$"/>
                <add input="{R:0}" pattern="^[a-zA-Z0-9_]*$" />
            </conditions>
        <action type="Redirect" url="/test1.aspx?client={C:0}" appendQueryString="true" />
  </rule>

笔记
该规则是在站点级别设置的,而不是在 IIS 中的服务器级别设置的。因此,模式匹配忽略了域名。

^(.*)test.com/(.*) - tried matching a test.com after the actual qualified domain name. So www.test.com/test.com/abc would satisfy the condition and not www.test.com/abc

解释

该规则匹配以下任何 URL - 模式 (.*)

第一个条件确保合格域名后面的任何内容至少有一个非空格字符

第二个条件确保正在解析的部分中没有特殊字符。这是我的要求。

相关内容