如果网站和服务器之间有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
。
有一个网站和一个服务器。如果网站直接访问服务器,一切正常。
该网站要求 .../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
。