所以我有一个使用这样的系统的网站:
domain.com/?page=123
我想显示为:
domain.com/123
我有 4 个虚拟主机,所以我只想将它应用到其中一个。
我的虚拟主机设置如下:
$HTTP["host"] =~ "(^|\.)domain1\.org$" {
-settings-
}
$HTTP["host"] =~ "(^|\.)domain2\.org$" {
-settings-
}
我真的不知道,已经尝试过搜索。
提前致谢。
在正确的主机块内,您需要:
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