default
menu home
Icon library Sign up Login favorite_border message help_outline
Online notes - online bookmark

统计搜索引擎对网站地图文件或robots.txt的访问记录的一种方法

styleTags: All CSS html javascript php/other IT
by: fanshome  2023-06-02 16:00(UTC)

一般而言,各大搜索引擎都允许提交网站地图,例如网站根目录下的“sitemap.xml”文件,是xml格式的文本文件。当提交了网站地图后,搜索引擎蜘蛛来访时,可能会读取:http://www.domain.com/sitemap.xml,以获得你网站的所有链接,以便收录。

但是,我很好奇,这个网站地图到底被哪些搜索引擎来抓取了呢?抓取频次如何呢?

由于网站地图本身是文本文件,不能直接写入统计代码。虽然有些搜索引擎允许自定义网站地图文件后缀,例如可以是.php文件。但是为了统一起见,还是使用比较规范一点的xml后缀比较省事。再者,假如想统计robots.txt文件的访问记录呢?这个文件名可是全球统一没得改的。

一种方法是修改php.ini配置文件,找到 AddType application/x-httpd-php 这一行,在后面添加想要使用以php方式执行的文件后缀,比如xml,txt。我没有试过,怕带来不必要的麻烦。

我使用的方法,以apache2 web server为例,先改名网站根目录下的sitemap.xml和robots.txt,比如改成map.xml和bots.txt,然后在.htaccess文件(或者apache配置文件.conf)中定义重写规则,遇到访问的文件名不存在时,重写request uri到一个脚本文件,比如php。

下面以.htaccess文件为例:

php/othercontent_copyCopy codes
RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ jump.php/$1

意思是:遇到目录或者文件不存在的时候,统一调用“jump.php”。比如蜘蛛想读取“sitemap.xml”,实际上我们却让它访问了“jump.php”。这样,我们就可以在jump.php文件中写入各种代码,对蜘蛛来访的各种信息进行记录和统计,最后读取对应的真实文件名的文件内容(如上面提到的map.xml或bots.txt),然后加上正确的文件头,再输出给客户端,比如:header("Content-type: text/xml"); 这时,蜘蛛们应该并不知道是访问了一个php文件,以为是直接读取了对应的文本文件。

这样一来,大大增加了灵活性,我们就可以看看各家的蜘蛛们到底表现如何了。

visibility 1672


- for heavy web user Online notes
adimg
logo Post a comment

captcha
Please check the captcha code
Cancel