当前位置:首页 » 好文分享 » 详情

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

使用EM博客程序的朋友应该知道,伪静态后URL不是唯一性的,举个很简单的例子:
标准地址为:http://域名/1.html 但同时地址:http://域名/xx/1.html,http://域名/?post=xxx也正常打开,其中的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'];
$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));}
?>

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

注意:使用上面代码,如果文章页有分页的可能造成错误哦,
打赏
X
打赏方式:
  • 支付宝
  • 微信
  • QQ红包

打开支付宝扫一扫
日期:2017年12月15日 21:36:18 星期五   分类:好文分享   浏览(32234)
本文地址:https://www.blogs.hk/post-2974.html   [百度已收录]
声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!

留言咨询

自动获取QQ

昵称

邮箱

网址

      Copyright © 2024 博客之家 版权所有  
      關於本站免責聲明sitemap新站登錄