来自Apache阵营的相当新的lighttpd。使用Apache,您可以将.htaccess
文件放在任何目录中,为项目提供一些额外的规则。使用lighttpd是不可能的?
尝试:
和subdir/subdir.<conf.d|conf|d>
等,似乎没有任何作用。使用lighttpd是不可能的?我需要在子目录中为每个项目编辑/etc/lighttpd/lighttpd.conf
吗?
Lighttpd不是Apache,所以你必须习惯lighttpd这样做的方式。不幸的是,这关闭了很多来自Lighttpd的人,它没有相当于.htaccess。
Lighttpd也只有一个中央配置文件。但是它确实有includes
的概念,所以如果你想为每个虚拟主机分别配置一个配置文件,你可以执行以下操作:
在你的/etc/lighttpd/lighttpd.conf
中设置你的每个vhosts:
$HTTP["host"] == "example.com" {
include "example.com.conf"
}
然后你可以为你的每个vhost创建一个单独的配置,在这种情况下/etc/lighttpd/example.com.conf
像这样:
## set up php
fastcgi.server = ( ".php" => ((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php-" + PID + ".socket"
)))
## redirect non-www to www
$HTTP["host"] =~ "^example\.com$" {
url.redirect = ( "^/(.*)" => "https://www.example.com/$1" )
}
## Domain specific rewrites
url.rewrite-if-not-file = (
"^/(.*)$" => "/index.php/$1"
)
## Deny Access
$HTTP["url"] =~ "^/secrets" {
url.access-deny = ("")
}
以这种方式执行操作的好处是您可以为特定的vhost设置提供自定义配置。例如,php的单独配置,wordpress的一个配置,nodejs的一个等等。像这样:
$HTTP["host"] == "wordpress.example.com" {
include "php.conf"
include "wordpress.conf"
}
$HTTP["host"] == "nodeapp.example.com" {
include "nodejs.conf"
}
在这个例子中,php.conf将包括你所有的fastcgi设置,wordpress.conf你所有的wordpress重写和nodejs.conf所有代理设置到你的节点应用程序。