Skip to main content

拥有独立ip的网站,防止ip地址被百度等搜索引擎收录的办法

不可否认,采用独立ip来建设网站是有一定好处的,但是如果不在服务器上做一些细节设置的话,会导致用户可以通过ip地址直接访问你的网站。而且,不管是通过ip访问,还是用域名访问,得到的网站内容是一模一样的。下图,是我在百度上随便找的一个例子,请相信我,这种可以通过ip地址直接访问的网站数不胜数:

通过ip访问网站

接着上图的例子,下面去百度上site它的域名和ip,分别得到下面的结果:

域名和ip在百度上不同的site结果

  • site:域名的时候,该网站共有 4,263 个网页被百度收录,首页不在第一位
  • site:该网站服务器独立ip的时候,该网站共有 1,082 个网页被百度收录,首页在第一位

这就导致了网站权重的分散。在这种情况下,“域名”和“服务器的IP地址”对百度来说,是两个内容相同的网站,是两个相互竞争的网站。我们经常说人生最大的敌人就是自己,又有谁能想到独立ip也会成为域名的敌人?有的站长可能会说,我没有出去发过ip啊!百度怎么知道的?

  • 其一:你的竞争对手发现了你网站的这个漏洞,他给百度做的ip地址引流,降低你域名的权重,好看你自己打自己;
  • 其二:谁都可以去诸如爱站、站长之家等网站上查询你网站的综合信息,在查询结果页面中,有你的域名url,也有你服务器所在的ip地址。最重要的,这样的查询结果页面是可以被百度收录到的。所以,你问百度怎么知道的?

问题已经产生,我们该如何避免这样的情况复现呢?下面我用linux服务器的apache设置来举例说明。安装好apache之后,一般在/etc/apache2/目录下会有vhosts.d、sites-available这种类似的目录,里面就是给你放虚拟主机的。我一般会在里面建立一个000.conf的文件,内容如下:

<VirtualHost *:80>
    ServerAdmin 该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
    ServerName www.all.com
    DocumentRoot /home/all/public_html
    ErrorLog /home/all/logs/error_log
    CustomLog /home/all/logs/access_log combined
</VirtualHost>

当然,我并没有all.com这个域名的控制权,但这个并不重要。在apache启动的时候,它是一个接着一个读取配置文件的,因为000.conf这个文件名的特殊性,它是第一个被读到并被加载的。这个000.conf的作用就是给服务器的独立ip地址开一个虚拟主机,以后每个用ip来访的客户都会被指定到/home/all/public_html/这个目录下,我们可以在这个目录下建立一个简单的index.html文件,诸如"Hello world."之类的。

如果我们的网站已经像上面的那个例子一样,被百度收录了域名版的网页和ip地址版的网页,该怎么办才好呢?这时候我们需要用到apache的mod_rewrite。在网站的根目录下建立一个.htaccess文件,以我这个网站域名为例,内容如下:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^chengduwangluo\.com [NC]
RewriteRule ^(.*)$ http://chengduwangluo.com/$1 [R=301,L]

它的用处就是告诉网站服务器,如果访客或者搜索引擎蜘蛛访问的不是 http://chengduwangluo.com/ ,而是诸如http://ip地址/一类的网址,全部301重定向到 http://chengduwangluo.com/ 。这种做法可以让我们网站的权重集中,也可以防止ip地址被百度等搜索引擎收录。