0

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

domain.com/?page=123

我想显示为:

domain.com/123

我有 4 个虚拟主机,所以我只想将它应用到其中一个。

我的虚拟主机设置如下:

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

我真的不知道,已经尝试过搜索。

提前致谢。

4

1 回答 1

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

于 2013-06-21T18:23:56.007 回答