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不需要以“/”字符作为结尾。