SGTMS

做事情
我们是认真的
您的位置:SGTMS>其他>Emlog文章URL统一

Emlog文章URL统一

正文

使用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));
}}?>
本文最后更新于2019-2-9,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《Emlog文章URL统一》
文章链接: https://www.sgtms.com/other/84.html
本站资源仅供个人学习交流,转载或者引用本文内容请注明来源及作者,不允许用于商业用途。
分享到:

相关推荐

网友评论抢沙发

路人甲 表情
Ctrl+Enter快速提交