emlog博客的伪静态设置后,文章的url不是唯一的,会显示好几种样式,这种情况下面的几种链接都是可以打开的
https://www.yukawang.com/post-101.html
https://www.yukawang.com/xx/101.html,
https://www.yukawang.com/?post=101
都是可以正常打开的,其中的XX为任意数字或者字母
我的网站就是这种情况,百度收录的这三种链接都有,非常不方便,对网站SEO也不友好,很可能会被判作弊。所以我就百度搜索了方法,这里介绍一个实测可用的方法。
本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了
$page=isset($params[5])?intval($params[5]):1;//文章页代码
$ymurl=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//浏览器获取URL
//$emurl=preg_replace('/(http://|https://|)*/','',Url::log($logid));//去除http://或https://的默认url
$emurl=str_replace(array("http://","https://"),'',Url::log($logid));//去除http://或https://的默认url
if($emurl!=$ymurl && $page==1){//判断2者是否相同,是否第一页
header('HTTP/1.1 301 Moved Permanently');
header('Location:'.Url::log($logid));//不同时调整到默认URL
}
?>
如何没有修改过em内核路径的朋友们建议使用以下代码(速度更快)
$page=isset($params[5])?intval($params[5]):1;
if(BLOG_URL.trim(Dispatcher::setPath(),'/') !=Url::log($logid) && $page==1 && $p==''){
header('HTTP/1.1 301 Moved Permanently');
header('Location:'.Url::log($logid));
}
?>
注意,如果文章设置有分页,这些代码就会出错