前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >解决Emlog博客程序伪静态后URL不是唯一地址的教程

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

作者头像
用户8099761
发布2023-05-10 20:18:03
发布2023-05-10 20:18:03
17400
代码可运行
举报
文章被收录于专栏:私人订制私人订制
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
复制
标准地址为:http://域名/1.html
但同时地址:http://域名/xx/1.html,http://域名/?post=xxx也正常打开,其中的XX为任意数字或者字母

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

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

代码语言:javascript
代码运行次数:0
运行
复制
<?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内核路径的朋友们建议使用以下代码(速度更快),如果有修改过就只能使用上面代码

代码语言:javascript
代码运行次数:0
运行
复制
<?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));}
?>

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-9-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档