电脑技术学习

nginx下WordPress伪静态化与静态化

dn001

在强大的模板、插件的支持下,WordPress从一个博客后台工具,直接升级为CMS内容发布系统,已经是没有任何疑义的一个事实。但是WordPress的文章链接,以http://www.zhangwenbin.com.cn/?p=96之类的形式存在,对于网站的SEO来说,确实是不太友好。对于这个问题,其实wordpress本身是有支持的。在wordpress里,链接地址可以是“固定链接的形式。这种形式,我们很多时候称它为“伪静态化。不过,跑到其插件库里仔细翻了翻,发现,原来WordPress,也是可以支持真正的静态化的。

要实现wordpress的真实静态化,需要两个前提。

1、首先实现wordpress的伪静态化。

2、安装使用wordpress插件: Really Static

首先是wordpress的伪静态化。wordpress的帮助中,有明确提到它的伪静态化的实现。所谓的伪静态化,就是让wordpress的文章、分类的URL地址看起来像是静态页面,但是实际上是通过web服务器的url重写规则来实现的“假静态化地址。在其后台管理中,找“设置“固定连接。缺省情况下,其设置是“默认的http://www.zhangwenbin.com.cn/?p=96这样的形式。其他可选的形式,有:

日期和名称型 http://www.zhangwenbin.com.cn/index.php/2014/09/17/sample-post/

月份和名称型 http://www.zhangwenbin.com.cn/index.php/2013/09/sample-post/

数字型 http://www.zhangwenbin.com.cn/index.php/archives/96

文章名 http://www.zhangwenbin.com.cn/index.php/sample-post/

这四种链接地址,都需要web服务器的支持。wordpress的建议可以在这个地址找到:

zh-cn:使用固定链接:http://codex.wordpress.org/zh-cn:使用固定链接

上述文章中,明确给出了.htaccess和mod_rewrite下 实现方式。但是用的很多的nginx下,怎样实现,未提及。

随手查了查nginx的重写规则,试写了几段,放在了nginx的配置文件的location区段:

; ; ; if (-d wp-admin){

; ; ; ; ; ; ; break;

; ; ; }

; ; ; if (-f $request_filename/index.html){

; ; ; ; ; rewrite (.*) $1/index.html break;

; ; ; }

; ; ; if (-f $request_filename/index.php){

; ; ; ; ; rewrite (.*) $1/index.php;

; ; ; }

; ; ; if (!-f $request_filename){

; ; ; ; ; rewrite (.*) /index.php;

; ; ; }

其中第一句是避免后台被重写。

经测试可用。

加入上述代码后,wordpress的伪静态化就实现了。现在,后面的四种固定链接,都可以生效了。

接下来,搜索Really Static插件,安装。

Really Static插件的安装极其简单。需要注意的是,Really Static的工作原理,其实是遍历了整个网站,然后生成静态页面,写入到本地文件系统。所以,一定要保证really static的工作目录是web用户可写。

至此,wordpress的真静态化实现了。