最近使用一款网友修改版的phpcms,把栏目生成到根目录下后发现分页的链接错误,比如我在域名/news目录下,而生成的分页链接是news/2.html,这样完整的URL就会多了一层news而出现404的错误。尝试了各种办法都没有解决,最后是添加了一个静态化的规则实现了正确的URL。
方法也很简单就是URL规则添加根路径,这样生成的分页链接就是/news/2.html
另外一种方法就是直接返回完整的带域名的URL,下面是网上的一种修复方法,看上去应该是好用的只不过我的没有成功,不知道是不是因为改版phpcms的原因,大家可以自己尝试下。
问题所在公共函数库:phpcms/libs/functions/global.func.php
找到子程序pageurl,大约在711行
在“$url = str_replace($findme, $replaceme, $urlrule);”下添加代码
/**
* 返回分页路径
*
* @param $urlrule 分页规则
* @param $page 当前页
* @param $array 需要传递的数组,用于增加额外的方法
* @return 完整的URL路径
*/
function pageurl($urlrule, $page, $array = array()) {
if(strpos($urlrule, '~')) {
$urlrules = explode('~', $urlrule);
$urlrule = $page < 2 ? $urlrules[0] : $urlrules[1];
}
$findme = array('{$page}');
$replaceme = array($page);
if (is_array($array)) foreach ($array as $k=>$v) {
$findme[] = '{$'.$k.'}';
$replaceme[] = $v;
}
$url = str_replace($findme, $replaceme, $urlrule);
$url = str_replace(array('http://','//','~'), array('~','/','http://'), $url);
$app_path = pc_base::load_config('system', 'app_path');
$appurl = rtrim( $app_path, "/" );
if(strpos($url, $appurl) === false) {
$url = $appurl.$url;
}
return $url;
}
另外推荐下网友修改版的一款phpcms,感觉还是下了很多功夫的
https://gitee.com/zhaoxunzhiyin/phpcms