我将此作为指导IISRe书面规则:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module的工作指南。
对不起-也被问到了SO (https://stackoverflow.com/questions/61149139/iis-url-rewrite-rule-test-pattern-error-the-input-data-to-test-does-not-match-t),但是服务器故障可能更适合这种类型的问题,因此在这里提出。
这是我的第一条规则,使用microsoft文档中的指南:
From: http://localhost/article/342/some-article-title
To: http://localhost/article.aspx?id=342&title=some-article-title
Enter into "Edit Inbound Rule"
Pattern: ^article/([0-9]+)/([_0-9a-z-]+)
Rewrite URL: article.aspx?id={R:1}&title={R:2}
Enter into "Test Pattern"
Input data to test: article/234/some-title
Pattern: ^article/([0-9]+)/([_0-9a-z-]+)
To: article.aspx?id=342&title=some-article-title它工作得很好,而且测试也很好-这里的屏幕截图:

这是web.config文件中的规则:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="a">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>但是,我想让规则以相反的方式工作,所以我在规则定义中尝试了以下内容:
From: http://localhost/article.aspx?id=342&title=some-article-title
To: http://localhost/article/342/some-article-title
Enter into "Edit Inbound Rule"
Pattern: ^article.aspx?id=([0-9]+)&title=([_0-9a-z-]+)
Rewrite URL: article/([0-9]+)/([_0-9a-z-]+)
Enter into "Test Pattern"
Input data to test: article.aspx?id=342&title=some-article-title
To: article/234/some-title不幸的是,这不起作用--当我测试模式时,我得到一个“要测试的输入数据与模式不匹配”的响应。
我试图让规则反其道而行的截图:

这是web.config文件中的第二条规则:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="a">
<match url="^article.aspx?id=([0-9]+)&title=([_0-9a-z-]+)" />
<action type="Rewrite" url="article/([0-9]+)/([_0-9a-z-]+)" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>在第二条规则中,我尝试了是否使用“追加查询字符串”选项(上面的摘录带有勾选选项)。
我想知道我做错了什么?
发布于 2020-04-11 18:13:11
这是因为您必须像这样转义?:模式中的\?。
以下是正确的版本:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="a">
<match url="^article.aspx\?id=([0-9]+)&title=([_0-9a-z-]+)" />
<action type="Rewrite" url="article/([0-9]+)/([_0-9a-z-]+)" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>https://serverfault.com/questions/1011857
复制相似问题