Sablog-x 2.0 待开发和调整的地方还不少啊!时不时总会发现些小BUG!
问题发现:
点击我的tags 菅野洋子
链接是:
http://www.ihjin.cn/tag/%25E8%258F%2585%25E9%2587%258E%25E6%25B4%258B%25E5%25AD%2590/
这个是静态链接的地址,当静态地址启动之后,这个链接能够正常访问。
但是关闭了永久链接之后,系统生成的链接是
http://www.ihjin.cn/?action=tags&item=%25E8%258F%2585%25E9%2587%258E%25E6%25B4%258B%25E5%25AD%2590
系统提示不存在,查看了.htaccess里面规则,正确的应该是action=article
修改include/func/permalink.func.php里面的gettaglink()函数,把tags替换程article之后。英文和数字的tags可以正常打开,但是中文的tags就显示记录不存在!
仔细看了链接,发现,正常的编码应该是%AA这样类型的,为什么这里是%AAAA。于是对比了sax-1.6和2.0同一个tag的链接,好像是那个%25出的问题,%25不就是%的编码吗?确定是字符替换导致的问题。
问题成因
modulesarticle.php里面对tags使用了urlencode($tag),进行了第一次编码,随后调用gettaglink()函数。
打开includefuncpermalink.func.php文件,发现gettaglink()函数对调用进来的urlencode($tag)再次进行urlencode(),结果把%转换成了%25,导致了链接错误。
解决办法
- 打开includefuncpermalink.func.php,找到里面的gettaglink()函数,把其中action=tags替换程action=article,保存。
- 打开includefuncpermalink.func.php文件,找到gettaglink()函数中的两个urlencode($tag),将其替换为$tag,保存。这样无论静态地址还是动态地址,都正常了。
但是有个疑问,为什么静态地址不会受到影响?
站内搜索