Lighttpd下Wordpress的Rewrite规则
2015-02-11 14:00:12 2015-02-11 15:57:29
如果你是把Wordpress从Apache换到Lighttpd下的话,会发现原先wordpress用的.htaccess文件里的Rewrite规则失效了,这是因为lighttpd并不直接支持用.htaccess里的rewrite规则,所以需要做相应的修改才行。
Wordpress配置文件
如果你是按照我前面的方法配置虚拟主机建立网站的话,只要在网站的配置文件下增加几行,变成:
$HTTP["host"] =~ "(^|.)il8g.com$" {
server.document-root = "/var/www/il8g"
accesslog.filename = "/var/log/lighttpd/il8g.log"
server.error-handler-404 = "/e404.php"
url.rewrite-once = (
# 有些wordpress自带的目录不需要rewrite
"^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
# 如果是根目录下的php文件,也不需要rewrite
"^/(.*.php)" => "$0",
# 其它的就转到index.php下来处理
"^/(.*)$" => "/index.php/$1"
)
}
保存设置文件后再重启lighttpd,就可以了
service lighttpd restart
更简单的配置文件
上面只是一个简单的如何用lighttpd来设置rewrite的例子,其实对于Wordpress来说,还有更简单的方法,就是把所有的404错误文件都转到index.php上来就行了。这样的话,只要把原先的设置最后一项404错误处理修改成index.php就行了,如下
$HTTP["host"] =~ "(^|.)il8g.com$" {
server.document-root = "/var/www/il8g"
accesslog.filename = "/var/log/lighttpd/il8g.log"
server.error-handler-404 = "/index.php"
}
再重启lighttpd,应该就可以了。
有可能的模板问题
如果这时候还是不行,那可能是你用的wordpress模板的404文件并没有设置发送404错误的机制,只要修改模板的404.php文件(在Appearance->Editor下面选择404 Template/404.php),在这个文件的最开始的地方加上下面这一行就行了
<?php header("Status: 404 Not Found"); ?>