奇怪的查询:"equal斜杠id"(=/id)给出奇怪的错误:501


Weird query: "equal slash id" (=/id) gives weird error: 501

这是我一生中遇到的最奇怪的问题,甚至无法谷歌它。它发生在一个用PHP编写的Apache支持的网站上,它使用mod_rewrite(但这不是问题,我试图删除。htaccess文件,问题仍然存在)。

如果我有一个查询字符串看起来完全或类似于:=/id,我得到一个501响应:

方法未实现

GET to/not supported.

另外,在尝试…时遇到404 Not Found错误使用ErrorDocument来处理请求。

我从来没有写过这样的错误页面,从来没有发送过501响应,一点也不知道这个东西是从哪里来的。最初,我有一个很长的URL,给出了类似的错误,但我将其简化为上面的一小段代码。如果我删除或改变任何字符,错误就会消失。

如果有帮助:我的网站是commentards.net,原始URL是一个openid登录请求,看起来像这样:

http://commentards.net/q/user/auth?openid_identifier=https://www.google.com/accounts/o8/id

查询字符串的来源:

? openid_identifier = https://www.google.com/accounts/o8/Fid

我问了技术支持团队,他们说是mod_security,并在我的网站上禁用了它。现在它工作得很好。我应该从这个开始。无论如何,谢谢你的帮助。

Urlencode您的查询字符串参数

https://www.google.com/accounts/o8/id就变成了https % 3 a % 2 f % 2 fwww.google.com % 2 faccounts % 2 fo8 % 2 ffid

http://commentards.net/q/user/auth?openid_identifier=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2FFid工作正常,所以HerrSerker已经回答了你的问题。