一、异常链接被收录
域名http://www.abc.com 发现很多http://www.abc.com/?abc 等,域名后面直接加?xxxx动态参数,打开依然是首页。
二、问题分析
① 怎么来的?
链接具体是怎么来的,不清楚,网站中是没有的,访问日志中也有不少这种链接的访问。
② 为什么域名后面加?和参数依然能打卡首页?
http协议中,问号代表后面是参数。打开是肯定可以打开的,如果禁止打开,那就没办法传参数了,网页就是纯静态了。能打开没毛病,不要打程序员。
三、问题处理
处理原理:链接中包含?加参数可以正常打开,这是正常的。但是正常链接应该是http://www.abc.com/product.php?xxx 。中间是有文件名的。利用这个原理,来屏蔽掉没有文件名却有参数的访问。
处理方法有两种:
① 通过robots.txt屏蔽。
原理:通过robots.txt禁止蜘蛛抓取。
处理方法:robots.txt中加入"Disallow: /? ",禁止蜘蛛抓取/?的链接。
User-agent: *
Disallow: /?
② 通过PHP屏蔽掉域名后面直接跟参数的链接。
原理:通过PHP判断url请求参数的前两位是否是/? 。如果是,则301跳转或者跳转404。
处理方法:在入口文件加入以下代码。
<?php
$request_uri = $_SERVER["REQUEST_URI"];
$param_head2 = substr($request_uri,0,2);
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'];
$site_url = $protocol . $domainName;
if($param_head2=='/?'){
//跳转404
//header("HTTP/1.0 404 Not Found");
//header('Location: /404.htm');
//301跳转到首页
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$site_url.'/');
}
?>