试图找出lighttpd并重写URL

时间:2013-06-21 10:21:18

标签: rewrite lighttpd

所以我有一个使用这样的系统的网站:

domain.com/?page=123

我希望显示为:

domain.com/123

我有4个虚拟主机,因此我想将其应用于其中一个。

我的虚拟主机设置如下:

$HTTP["host"] =~ "(^|\.)domain1\.org$" {
-settings-
}
$HTTP["host"] =~ "(^|\.)domain2\.org$" {
-settings-
}

我真的不知道并且已经尝试过了。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在正确的主机块中,您需要:

url.rewrite-once = ( "^/(.*)$" => "/?page=$1" )

这是一个正则表达式,匹配行^的开头,后跟/后跟任何 .*,并在子表达式(.*)中捕获它到结尾行$并将其重写为/?page=<the subexpression text>

由于你将它放在$ HTTP [“host”]块中,它只适用于特定的主机。

编辑:示例日志

2013-06-21 12:07:52: (response.c.300) -- splitting Request-URI 
2013-06-21 12:07:52: (response.c.301) Request-URI  :  /123 
2013-06-21 12:07:52: (response.c.302) URI-scheme   :  http 
2013-06-21 12:07:52: (response.c.303) URI-authority:  rewrite.example.com 
2013-06-21 12:07:52: (response.c.304) URI-path     :  /123 
2013-06-21 12:07:52: (response.c.305) URI-query    :   
2013-06-21 12:07:52: (response.c.300) -- splitting Request-URI 
2013-06-21 12:07:52: (response.c.301) Request-URI  :  /?page=123 
2013-06-21 12:07:52: (response.c.302) URI-scheme   :  http 
2013-06-21 12:07:52: (response.c.303) URI-authority:  rewrite.example.com 
2013-06-21 12:07:52: (response.c.304) URI-path     :  / 
2013-06-21 12:07:52: (response.c.305) URI-query    :  page=123

在此示例中,/123被重写为/?page=123,我们会在/?page=123上看到请求重新启动