如果网站和服务器之间有IIS,301重定向请求丢失查询字符串

If there is an IIS between the website and the server, 301 redirected requests lose the query string

有一个网站和一个服务器。如果网站直接访问服务器,一切正常。 该网站要求 .../jobs?limit=50.

它收到 301 并重定向到 .../jobs/?limit=50 成功!

现在我们在两者之间添加一个IIS。 IIS 确实 URL 重写。 该网站要求 .../jobs?limit=50。 再次获得 301 但它现在仅重定向到 .../jobs/

查询字符串丢失。它在 301 响应的响应 header 中的“位置”参数中丢失。

重写规则设置为 ^(abc.*) 模式,重写 URL 为 http://localhost:1234/{R:1}。追加查询字符串已选中。

您需要查看 web.config 文件是否包含语句 appendQueryString="true"

一种可能是,如果默认启用“追加查询字符串”复选框,web.config 文件可能不包含该语句。您可以尝试先取消勾选,然后再重新勾选。

如果还是不成功,可以去微软看看this official article。 并尝试重新安装最新版本的URL Rewrite Module