正文
使用emlog5.31程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子:
标准URL为:http://域名/1.html, 但同时URL:http://域名/xx/1.html, http://域名/?post=xxx也正常打开, 其中的XX为任意数字或者字母
这个是因为伪静态规则的问题,因为正则匹配 /([^./?=]+)(.html) 可以匹配/ 开始 一个或多个 不是 . / ? = 之外的字符 然后.html 结束的字符串所以不管你加什么,都只会匹配 /1.html 这一部分,那么如何解决这一问题呢?PHP代码301跳转,亲测可用。
本代码通用,直接把下面代码放入echo_log.php和page.php第一行就可以(适用于未修改内核,无文章分页)。
<?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)); } ?>
如果修改过内核,删除过分类sort的可以试试用下面这个。
<?php $ymurl=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];//获取访问地址 if($sortName){ $emurl=preg_replace('/(http:\/\/|https:\/\/|)*/','',Url::sort($sortid)); if($emurl!=$ymurl&&$page==1){ header('HTTP/1.1 301 Moved Permanently'); header('Location:'.Url::sort($sortid)); }}?>
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Emlog文章URL统一》
文章链接: https://www.sgtms.com/other/84.html
本站资源仅供个人学习交流,转载或者引用本文内容请注明来源及作者,不允许用于商业用途。
文章名称:《Emlog文章URL统一》
文章链接: https://www.sgtms.com/other/84.html
本站资源仅供个人学习交流,转载或者引用本文内容请注明来源及作者,不允许用于商业用途。
网友评论抢沙发