我在别人编写的 Apache 配置文件中遇到了这个代码片段,但我不确定它的用途。有人能解释一下这是干什么用的吗?
RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1\.1$
RewriteRule .* - [F]
答案1
这些指令拒绝(403 Forbidden)任何非 HTTP/1.1 的请求。许多机器人使用 HTTP/1.0 请求标头进行爬取 - 因此这些请求将被阻止。所有现代浏览器都将使用 HTTP/1.1(至少)。然而,由于 HTTP/2.0 已经出现,这些指令可以说已经过时,不应再使用。
服务器THE_REQUEST
变量包含以下形式的初始请求标头:
GET /foo HTTP/1.1
如果您只想阻止 HTTP/1.0,那么您可以使用以下命令:
RewriteEngine On
RewriteCond %{THE_REQUEST} HTTP/1\.0$
RewriteRule ^ - [F]