最新版Cscms 4.2 开启伪静态链接乱码的解决方法

3517 3517
2022-08-26 16:15
2705 浏览
8 回复
官方目前最新版伪静态乱码解决方法,官方修复此bug后该方法失效;
正常是:/dance/list-id-1-1.html
最新版:/dance/list-%7Bsort%7D-%7Bid%7D-%7Bpage%7D.html

解决办法:
找到 /cscms/app/helpers/common_helper.php 此文件 大概 378-400行 //HTML转字符

function str_encode($str){
	if(is_array($str)) {
		foreach($str as $k => $v) {
			$str[$k] = str_encode($v); 
		}
	}else{
		if(is_string($str)){
			$str=str_replace("",">",$str);
			$str=str_replace(""",""",$str);
			$str=str_replace("'",''',$str);
			$str=str_replace('{','{',$str);
			$str=str_replace('}','}',$str);
			$str=str_replace("$","$",$str);
			$str=str_replace("(","(",$str);
			$str=str_replace(")",")",$str);
			if(!defined('IS_ADMIN')){
				$str=str_replace("cscmsphp",'',$str);
			}
		}
	}
	return $str;
}

改成如下代码
function str_encode($str){
	if(is_array($str)) {
		foreach($str as $k => $v) {
			$str[$k] = str_encode($v); 
		}
	}else{
		if(is_string($str)){
			$str=str_replace("",">",$str);
			$str=str_replace(""",""",$str);
			$str=str_replace("'",''',$str);
			$str=str_replace("$","$",$str);
			$str=str_replace("(","(",$str);
			$str=str_replace(")",")",$str);
			if(!defined('IS_ADMIN')){
				$str=str_replace('{','{',$str);
				$str=str_replace('}','}',$str);
				$str=str_replace("cscmsphp",'',$str);
			}
		}
	}
	return $str;
}

由于先前有问题的伪静态规则还保存在伪静态配置文件里面;
改完以后在后台各个板块的-板块配置-运行模式-伪静态,依次重新点一下提交,让正常的伪静态规则重新替换到伪静态配置文件里面,即可解决问题;

回复列表(8)

langtou
langtou
2025-11-01 18:38
Apache 服务器使用宝塔里面的thinkphp伪静态规则即可


也就是根目录下的文件 .htaccess




 RewriteEngine on
 RewriteBase /
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]

回复
dj模板二次开发
dj模板二次开发
2024-09-17 16:48
哈哈 哈哈
回复
回到过去变成猫゛
回到过去变成猫゛
2024-08-19 21:49
方法无效
回复
狮
2023-06-09 22:18
管用,就是多搂了一个 逗号的转义
回复
3517
3517
2022-12-07 12:52
里面的符号被转义了,导致出现500报错,把'{'、'}'两个符号部分的替换代码 ,剪切到if(!defined('IS_ADMIN')){}里面就可以了。
回复
3517
3517
2022-10-16 15:26
你这个不管用
@请问请问 上面写的很详细,按照上面的来是管用的
回复
请问请问
请问请问
2022-10-16 13:30
你这个不管用
回复
阿东
阿东
2022-08-26 19:09
手机登陆不了 解决没有
回复