突然发现在 IE 下面 WordPress 的 404 页面不起作用了,而 FireFox、Opera 正常。
按照微软的说法:当网站的 404 错误页面小于 512 字节时,IE 不会显示网站定义的错误页面,取而代之显示 IE 缺省的友好 HTTP 错误信息。很显然,我的 404 页面不可能小于 512 字节。既然 FireFox、Opera 都正常,那问题肯定出在 IE 身上了,我判断是 IE 解析服务器返回的 404 页面时出了问题,导致 IE 认为服务器返回的页面大小不足 512 字节,因而显示了自身的错误页面。
为了防止 UTF-8 字符集网页在 IE 上会出现显示空白问题,通常我们都会把设定字符集的 meta 标签置于 title 标签之上,所以我修改了 K2 主题,没想到反而出了问题。当我把 meta 重新置于 title 之下时,IE 又可以显示 WordPress 的 404 页面了。查看 404 页面源代码发现头部多出一个空行 (K2 模板有些书写不“规范”)来,去掉空行,404 页面又不显示了。后来又发现将 meta 重新置于 title 之上,404 页面又显示正常了。
让朋友测试,朋友表示他那里 IE 正常显示了 WordPress 的 404 页面,我更晕了。更有意思的是本机测试一切正常。至于到底是什么原因,暂时也没搞清楚。
反正我是彻彻底底被 IE 玩弄了一番。
UPDATE at 2008.3.14
发现在 WordPress 后台打开 gzip 压缩选项,404 页面居然在 IE 下显示正常了。
WordPress 提供了多种结构标签,以便我们可以设置各种格式的永久链接结构,再配合一些静态化插件(例如 cos-html-cache),就可以使页面真正静态化。
不过 WordPress 对已分页文章的永久链接的处理方式则会给页面静态化后的访问带来问题。 例如,永久链接结构为 /%year%/%monthnum%/%postname%.html
,WordPress 生成的文章相关分页链接如下所示:
yourdomain.com/2008/03/postname.html
yourdomain.com/2008/03/postname.html/2
yourdomain.com/2008/03/postname.html/3
可以看到 WordPress 只是简单地将页码加在了链接尾部,所以当我们静态化其中一页的内容后,我们将只能访问被静态化的那一页内容而无法访问其它分页的内容。为了可以静态化所有分页内容,需要对 WordPress 处理永久链接的方式做些小小的改动,并改变分页链接的形式:
yourdomain.com/2008/03/postname.html
yourdomain.com/2008/03/postname-2.html
yourdomain.com/2008/03/postname-3.html
Continue reading…
本文仅对通过 WordPress 内置的分页功能实现的分页文章进行讨论
安装了 WP-PostViews 插件来统计和显示文章的点击次数。个人认为对于一篇被分页的文章,不论是否访问到完整篇文章的所有页面点击次数最多应该只计一次。不过 PostViews 却并非如此计算,例如一篇文章被分成了 3 页,不管阅读第一页、第二页还是第三页,PostViews 都会视为对该篇文章有了一次有效点击。为了避免这个问题,对插件作了一些修改。
访问文章的途径无非两种,直接访问和通过链接访问。我们需要做的就是通过 HTTP_REFERER 判断上一个访问页面是否和当前访问页面属同一文章,若是则不计点击数。为了方便判断,可以分成以下几种情况:
- 从第一页访问其它页面
- 从其它页面访问第一页
- 非第一页页面之间访问
Continue reading…