WordPress 静态化的烦恼
其实,确切地说应该是前几日的烦恼了。因为将永久链接结构设置成以下形式的关系,在静态化页面后,由于目录冲突,WP 便无法按年月浏览了。
/%year%/%monthnum%/%postname%.html
起初将静态化页面生成的年份、月份目录设置成可以列表,不至于出现浏览错误。不过这样一来,侧栏的日历以及按月归档功能便如同鸡肋了。
注意到若将永久链接结构设置设置成“使用日志的 ID 号”结构,按日期浏览时,WP 会自动加上前缀“date”,这是为了防止解析页面地址的时候将日志 ID 号和日期混淆起来。于是我想当然地将永久链接结构修改成:
/archives/%year%/%monthnum%/%postname%.html
以为可以解决问题。不料按年月浏览时,WP 居然会自动将地址修改为以下形式,也就说仍旧会产生目录冲突:
/archives/%year%/%monthnum%/
如此一来,只好再继续暴力一把了。
打开 rewrite.php 文件,找到
foreach ($tokens[0] as $token) {
if ( (($token == '%post_id%') && ($tok_index <= 3)) ) {
$front = $front . 'date/';
break;
}
$tok_index++;
}
修改成
foreach ($tokens[0] as $token) {
if ( (($token == '%post_id%') && ($tok_index <= 3)) || ( $token == '%year%' && $tok_index == 1) ) {
$front = $front . 'date/';
break;
}
$tok_index++;
}
一番折腾,总算解决问题。
为了将 WP 静态化,已经不止一次遇到问题了,也许还会遇到更多不可预知的问题。想想,折腾,有时候也算是一种乐趣吧。
已经有了更好的解决方案,点此查看
Comments
我test啊test
问一下,你这个静态化是指rewrite还是真正的html实体文件?
如果是后者,你怎么保证我在这个日志留言了,其他日志侧边栏的recent comments也相应更新?
是真正的html实体文件,用的就是江老大的插件
Leave a Reply