欢迎您光临小易传媒工作室博客,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!

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

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

默认地址为:https://www.shuyong.net/1.html
地址1:https://www.shuyong.net/xx/931.html,
地址2:https://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)); } ?>

如遇问题,请在本页留言。
注意:使用上面代码,如果文章页有分页的可能造成错误哦


小易传媒工作室资源网 » 解决Emlog文章详情页伪静态后URL不是唯一地址的教程
  • 166会员总数(位)
  • 921资源总数(个)
  • 1本周发布(个)
  • 0 今日发布(个)
  • 573稳定运行(天)

提供最优质的资源集合

立即查看 了解详情
升级VIP尊享更多特权立即升级
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除 ? 1995-2021 侵权投诉邮箱:1076433326@qq.com
高新区小易传媒工作室蜀ICP备20002808号-2

网站首页 |投稿奖励 |友情链接 | 广告合作 | 网站地图 | 留言反馈 | 联系小易

?版权所有,盗版必究-|小易传媒工作室