所以我有一个使用这样的系统的网站:
domain.com/?page=123
我希望显示为:
domain.com/123
我有4个虚拟主机,因此我想将其应用于其中一个。
我的虚拟主机设置如下:
$HTTP["host"] =~ "(^|\.)domain1\.org$" {
-settings-
}
$HTTP["host"] =~ "(^|\.)domain2\.org$" {
-settings-
}
我真的不知道并且已经尝试过了。
提前致谢。
答案 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
上看到请求重新启动