phpcms生成内容或更新URL,有时会出现url路径中多个一个斜杆“/”,出现双斜杠的情况,如:http://www.web315.net/category//article/1.html,http://www.web315.net//category/article/1.html等。
解决方法:
- URL规则管理中的
{$categorydir}和{$catdir}变量前面“/”去除,默认这两个变量尾部都是自带“/”的; - system.php配置文件中设置html_root为空:
'html_root' => '',system.php文件在/caches/configs/路径下。
原因分析
无论是生成内容还是更新URL,链接处理时都需要调用/phpcms/modules/content/模块下create_html.php中的urls()函数,大约在190行,如下图:
其中$this->url = pc_base::load_app_class('url'),所以urls()调用了content模块url类的show()方法,我们以更新指定栏目URL为例,看看是如何处理url链接的,如下图:
其中$this->urlrules = getcache('urlrules','commons'),也就是加载了urlrules缓存,这个缓存里面保存的就是后台设置的url规则。从上图可以看到各种url和dir目录最后都拼接了“/”,所以后台设置url规则时{$categorydir}和{$catdir}两个变量前不需要再加斜杆符号。
同样是url类中,再往下看会涉及到$html_root变量,如下图:

从上图中可以看到,$html_root变量后面也都拼接了斜杆字符,所以system.php配置中的html_root不需要以“/”字符作为结尾。
本文解决Phpcms生成内容或更新URL时出现的双斜杠问题,通过调整URL规则管理变量和system.php配置,确保URL路径正确。
9714

被折叠的 条评论
为什么被折叠?



