解决Emlog文章详情页伪静态后URL不是唯一地址的教程

2017-4-4 / 12 评论 / 26563 阅读

使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,舍力举个很简单的例子:

默认地址为:http://www.shuyong.net/1.html
地址1:http://www.shuyong.net/xx/931.html,
地址2:http://www.shuyong.net/?post=931
也是可以正常打开的,其中的XX为任意数字或者字母

这个是因为伪静态规则的问题,因为正则匹配 /([^./\?=]+)(.html) 可以匹配
/ 开始 一个或多个 不是 . / ? = 之外的字符 然后.html 结束的字符串
所以不管你加什么,都只会匹配 /1.html 这一部分,那么如何解决这一问题呢?舍力不懂伪静态规则,不过用php到是解决了这个问题,舍力提供的方法非常的简单粗暴,不知道有没有Bug的哦

本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了

<?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内核路径的朋友们建议使用以下代码(速度更快),即没有按此教程《emlog去除分类目录前的sort》修改过的,如果有修改过就只能使用上面代码

<?php 
$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));
}
?>

如遇问题,请在本页留言。

注意:使用上面代码,如果文章页有分页的可能造成错误哦

-=-以下代码是使用了本站教程《如何增加文章内容(日志)分页功能的方法分享》后使用

也是直接把下面代码放入echo_log.php和page.php第一行就可以了

<?php $p=$_GET["p"];$page=isset($params[5])?intval($params[5]):1;
$ymurl=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//获取访问地址
//$emurl=preg_replace('/(http:\/\/|https:\/\/|)*/','',Url::log($logid));//去除http或https的EM当前地址
$emurl=str_replace(array("http://","https://"),'',Url::log($logid));//去除http://或https://的默认url
if($emurl!=$ymurl && $page==1 && $p==''){
header('HTTP/1.1 301 Moved Permanently');
header('Location:'.Url::log($logid));
}
?>

评论一下?

OωO
取消
    1. 头像
      情兽先森丶
      第7楼
      加上提示301重定向过多
      回复
      1. 头像
        舍力
        @情兽先森丶:没明白你的意思
        回复
    1. 头像
      木木
      第6楼
      为什么我加了打不开文章呢
      回复
      1. 头像
        舍力
        @木木:没有改过任何地方的话,是没有问题的呢。
        回复
    1. 头像
      小杰
      第5楼
      很厉害的教程,已经修复了
      回复
    1. 头像
      Strong brother
      第4楼
      自定义文章别名404
      回复
      1. 头像
        舍力
        @Strong brother:我测试正常,请看本站
        回复
    1. 头像
      阿鑫
      地板
      为毛我添加了代码 文章页访问出错
      回复
      1. 头像
        舍力
        @阿鑫:提示什么呢?是否用的默认模板测试?
        回复
    1. 头像
      李明
      板凳
      这个方案解决了降权问题
      回复
      1. 头像
        舍力
        @李明:有用就好。
        回复
    1. 头像
      烈火君
      沙发
      这个方案解决了奇葩的搜索引擎,乱抓取URL、乱收录导致降权的问题
      回复