很长一段时间以来(现在一个多月),我在 apache 日志中看到如下行:
180.76.15.138 - - [24/Jun/2015:16:13:34 -0400] "GET /manual/de/mod/module-dict.html HTTP/1.1" 403 396 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
180.76.15.159 - - [24/Jun/2015:16:28:34 -0400] "GET /manual/es/mod/mod_cache_disk.html HTTP/1.1" 403 399 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
66.249.75.86 - - [24/Jun/2015:16:18:01 -0400] "GET /manual/es/programs/apachectl.html HTTP/1.1" 403 436 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
[Wed Jun 24 16:13:34.430884 2015] [access_compat:error] [pid 5059] [client 180.76.15.138:58811] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/de/mod/module-dict.html
[Wed Jun 24 16:18:01.037146 2015] [access_compat:error] [pid 2791] [client 66.249.75.86:56362] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/es/programs/apachectl.html
[Wed Jun 24 16:28:34.461298 2015] [access_compat:error] [pid 2791] [client 180.76.15.159:25833] AH01797: client denied by server configuration: /usr/share/doc/apache2-doc/manual/es/mod/mod_cache_disk.html
这些请求似乎真的来自百度蜘蛛和 Googlebot(使用反向 DNS 进行检查,如此处所述):
user@server:~$ host 66.249.75.86
86.75.249.66.in-addr.arpa domain name pointer crawl-66-249-75-86.googlebot.com.
user@server:~$ host crawl-66-249-75-86.googlebot.com
crawl-66-249-75-86.googlebot.com has address 66.249.75.86
我已经阅读过关于这个主题的类似问题,例如this和this,但是对于那些,这些错误实际上是在阻止站点正常工作。相反,在我的情况下,机器人尝试访问的 html 页面不存在,因此这是 Apache 的预期行为。唯一令人烦恼的是,尽管 Google 网站管理员工具没有显示任何错误,但 Google 在索引我的网站方面似乎很慢。
我正在使用具有以下虚拟主机配置的 Apache 版本 2.4.7:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "/var/www/example.com/public"
<Directory />
Options None
AllowOverride None
Order Deny,Allow
Deny from all
Require all denied
</Directory>
<Directory "/var/www/example.com/public">
Options None
AllowOverride FileInfo Limit Options=FollowSymLinks
Order Allow,Deny
Allow from all
Require all granted
</Directory>
ErrorLog /var/log/apache2/example.com/error.log
CustomLog /var/log/apache2/example.com/access.log combined
</VirtualHost>
因此,我的问题是:
- 为什么百度蜘蛛和 Googlebot 反复尝试访问我网站上不存在且网站上任何链接都没有引用的内容?
- 像这样的请求如何
GET /manual/de/mod/...
被映射到/usr/share/doc/apache2-doc/manual/de/mod/...
,而据我了解,它们应该去哪里/var/www/example.com/public/manual/de/mod/...
? - 一般来说:我应该担心这些行是配置错误的标志,还是有解释?
看起来您已经设置了新的Require指令,因此只需删除已弃用的访问指令并运行
sudo service apache2 reload
由于一段时间过去了没有任何答案,我决定(部分)根据我迄今为止的研究回答我自己的问题。
/manual/...
URL 被映射到/usr/share/doc/apache2-doc/manual/...
:我猜是这样,以便于访问文档。在我的情况下,这不是必需的,所以我决定通过发出a2disconf apache2-doc
后跟删除别名service apache2 reload
。确保以下选项具有正确的值并且未在 global.conf 中注释掉: