错误请求您的浏览器发送了此服务器无法理解的请求

Dav*_*vis 24 apache ubuntu

虽然我不是Ubuntu的专家,但我已经有两台服务器运行了几年而没有任何问题.

昨晚,当试图访问其中一个本地网站时,我得到了错误:

**Bad Request**
Your browser sent a request that this server could not understand.
Additionally, a 400 Bad Request error was encountered while trying to use an ErrorDocument to handle the request.
Run Code Online (Sandbox Code Playgroud)

经过几个小时的挫折并没有成功,我重建了服务器.当Ubuntu正在安装时,我去了另一台服务器并得到了完全相同的错误.第一台服务器现在已经重建,它显示相同的错误.

我关闭了网络上的每台计算机.关闭路由器并重新启动.

除了两台服务器外,网络还包括三台Windows机器和一台Ubuntu桌面.

我试过从互联网上隔离机器,我尝试了有线和无线客户端.

转到服务器上的localhost会显示Ubuntu Apache Default页面.

关于问题开始的唯一一件事就是Windows决定关闭这台机器进行更新.我不知道这是如何导致问题的,但我已将此机器与网络隔离,并且存在问题.

我清除了cookie,使用了五种不同的浏览器,它们都报告了同样的错误.我是出于想法,并寻找任何建议.

Ner*_*ero 71

在我的例子中,它实际上是_DocumentRoot中的下划线导致问题和数小时的调试.一旦我从DocumentRoot路径中删除它,一切正常.

  • 对我来说,它应该更改ServerName,以便它不会有下划线.Apache应该在错误消息中写入ServerName不支持下划线.它真的不应该浪费几个小时的开发人员时间,我很幸运,我找到了这篇文章.我正在使用Windows 7 (6认同)
  • 我在ServerName,ServerAlias,VirtualHost中将"_"更改为" - ",它可以工作!谢谢你的提示! (4认同)

Nan*_*Nan 23

这是由于更新RFC 3986,它声称下划线在虚拟主机服务器名称和其他元素中是不安全的.在我的情况下,我无法更改URL名称,因此我只是通过启用这些不安全的URL来允许此下划线.要做到这一点,只需在httpd.conf文件中添加不安全的HttpProtocolOptions即可.

https://httpd.apache.org/docs/2.4/mod/core.html#httpprotocoloptions


小智 8

对于较新的httpd版本,不支持URL中的连字符,在这种情况下,您必须将http不安全的HttpProtocolOptions添加到httpd.conf文件,之后它可以正常工作.


Dav*_*vis 5

好的,我确定99.99%的人在Capsule的帮助下找到了问题。成功的关键是将Apache的错误级别更改为调试。这给了我一个出发点,从那以后我经过了反复试验,一切都很好。

我有两个用于本地开发的服务器B777和B767。对于开发网站,我使用了诸如www.something.767和www.something.777之类的东西。所有站点都列在主机文件中。

几年来,这一切都很好。由于某种原因,我可能永远无法理解,昨天晚上,我开始在两台服务器上以及今天晚上构建的另一台服务器上收到上述错误。

似乎问题出在域名中使用数字。 我将域名从www.something.767更改为www.something.local(或其他任何非数字字符)后,一切都恢复了正常。