在 IIS7 URL 重写模块中,我可以在重定向规则中指定不适用于 http-post 请求吗?
Posted
技术标签:
【中文标题】在 IIS7 URL 重写模块中,我可以在重定向规则中指定不适用于 http-post 请求吗?【英文标题】:In the IIS7 URL Rewrite module, can I specify in a redirect rule to not apply to http-post requests? 【发布时间】:2011-08-25 01:18:59 【问题描述】:我正在使用 Microsoft 提供的模板来小写所有 url 并附加一个斜杠。但是,我有一个不符合此规范的 AJAX 发布请求,但它们破坏了我们将它们重写为 301。我不担心 SEO 的 POST 请求,所以我更愿意在规则中指定忽略它。以下是我的规则:
<rule name="AddTrailingSlashRule" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
<add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="R:1/" />
</rule>
<rule name="LowerCaseRule" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="ToLower:URL" />
</rule>
【问题讨论】:
【参考方案1】:在条件下,您可以在REQUEST_METHOD
变量中访问它。
<add input="REQUEST_METHOD" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
【讨论】:
我只是在 IIS 的规则系统中磕磕绊绊才发现的。当您键入第一个
时,“添加条件”窗口会在输入字段上提供智能感知体验。
感谢您的回答。尽管我发现您需要在这种情况下指定 negate="true" 以便重写规则适用于不是 REQUEST_METHOD = POST 的内容,但这对我有很大帮助。
伟大的收获,@thinkzig!我在使用它的地方肯定有那个negate
;我一定是在洗牌时把它弄丢了。我现在已经更正了答案。【参考方案2】:
不久前我们遇到了与 OP 相同的问题,然后应用了 patridge 的解决方案,该解决方案运行良好,直到我们注意到一些 REST DELETE 调用会失败。原来是尾部斜杠重定向使 GET 从 DELETE 请求中取出。
所以我修改了解决方案,使重定向规则仅适用于 GET 请求。
<add input="REQUEST_METHOD" matchType="Pattern" pattern="GET" ignoreCase="true" />
【讨论】:
以上是关于在 IIS7 URL 重写模块中,我可以在重定向规则中指定不适用于 http-post 请求吗?的主要内容,如果未能解决你的问题,请参考以下文章
xml url在iis7x及更高版本上将http重写为https重定向
IIS7 301 URL 重写给出 200 状态而不是 301 状态