这个月把两个淘宝客网站搬迁到vps,256M的vps,为了节省资源使用了lighttpd做服务器。问题来了,程序提供的伪静态都是apache的,搜索收录的页面都是伪静态页,没有办法了只好自己转换,要不然搜索过来的网页都404访问不了。看了不少资料,关于lighttpd的伪静态可以参考的官方的地址是:
官方文档:
http://redmine.lighttpd.net/wiki/1/Docs:ModRewrite
Apache -> Lighttpd 移植指南:
http://redmine.lighttpd.net/wiki/1/MigratingFromApache
下面说说我转换的过程,在官方的资料我们知道,lighttpd的伪静态格式为
一个规则的
url.rewrite-once = ( "正则表达式" => "相对的网址" )
多个规则的中间用,隔开
url.rewrite-once = (
"正则表达式1" => "相对的网址1",
"正则表达式2" => "相对的网址2"
)
我要转换的htaccess规则如下
RewriteEngine On
RewriteBase /
RewriteRule (^js/.*\.html$) $1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
去掉不需要用的代码我们需要转换的就只有
RewriteRule (^js/.*\.html$) $1 [L]
这一句而已。
按照格式套用把^js/.*\.html$填入正则表达式里面,$1 [L]就是要转换的网址,关键是这个,我开始转换成$1&$2,结果弄成类似index.php/list.html后缀的伪静态,后来重新修改成$1.php?$2才成功。如果规则写错lighttpd会出错,网站无法访问,删除规则再重启lighttpd服务就好了。
最后转换好的lighttpd规则如下
url.rewrite-once=("^/js/.*\.html$" => "$1.php?$2")
下面列出一些常用到的规则
重定向的规则,例如把www.wgtj.net 定向到 wgtj.net
$HTTP["host"] == "www.wgtj.net" {
url.redirect = (
"^/(.*)" => "http://wgtj.net/$1",
)
}
相对全部的带www域名都定向转换到不带www,可以这样写
$HTTP["host"] =~ "^www\.(.*)$" {
url.redirect = (
"^/(.*)" => "http://%1/$1",
)
}