Lighttpd将子域重写为子文件夹

我有一个服务器(本身在一个子域)与通配符DNS指向它。 服务器运行Lighttpd和PHP。

我需要http://any-subdomain.server.example.com重新写入http://server.example.com/site/any-subdomain ,并从那里提供服务。 它必须对用户完全透明。

这是我的相关configuration:

 $HTTP["host"] =~ "^(.*)\.server\.example\.com$" { url.rewrite-once = ( "^(.*)" => "/site/%1/$1" ) } 

它似乎工作除了子文件夹,其中redirect到subdomain.server.example.com/site/subdomain/subfolder ,然后404的。

url.rewrite-once改变URLpath (和查询string); 你的重写规则看起来像你正试图重写到磁盘上的文件夹。

你不能“重写”主机,但你可以使用相同的物理文件映射(和fastcgi后端和…)来处理两个主机名。 例如,您可以从其他虚拟主机复制server.document-root设置,或者使其他虚拟主机有条件地匹配两个主机名。

如果你有“全部”默认的虚拟主机块,请记住,对于每个configuration选项,最后一个活动块设置将覆盖所有其他设置(使用-p选项可以在评估+=之后查看内部顺序等),所以从默认的虚拟主机开始。

只是为了logging:“相关”configuration至less包括两个虚拟主机的部分,而不仅仅是第二个:)

我find了一个更好的方法,然后使用重写。 相反,我使用了mod_simple_vhost :

 simple-vhost.server-root = "/var/www/site/" simple-vhost.default-host = "myquick.club" simple-vhost.document-root = "www" 

在这种情况下,这比使用mod_rewrite简单得多。 虽然这很麻烦,但我希望这能帮助别人。