杨小杰博客提供免费教程下载和网站搭建技术教程,主要分享和发布网站源码,致力创造一个高质量网络资源教程的分享平台

解决Emlog博客程序伪静态后URL不是唯一地址的教程

Young小杰2017-6-28 17:20网站搭建(1)1337查询中……小标签: emlog emlog插件 舍力博客 emlog修复

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


标准地址为:http://域名/1.html但同时地址:http://域名/xx/1.html,http://域名/?post=xxx也正常打开,其中的XX为任意数字或者字母
原文地址:https://www.shuyong.net/931.html
这个是因为伪静态规则的问题,因为正则匹配 /([^./?=]+)(.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'];$emurl=preg_replace('/(http://|https://|)*/','',Url::log($logid));if($emurl!=$ymurl && $page==1){header('Location:'.Url::log($logid));}?>
如何没有修改过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('Location:'.Url::log($logid));}?>

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

这也是一个很好修复emlog文章链接任意字符的教程!

本文最后更新于2017-6-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!

评论:

林哲 Google Chrome 49.0.2623.87 Windows 7湖北省荆州市 联通 2018-05-20 20:15
完美解决

发表评论: