lighttpd:同一目录(例如Apache的.htacces)中子目录的配置/规则?

时间:2019-03-12 15:13:49

标签: configuration directory rules lighttpd

对于lighttpd来说,这是一个新手,来自Apache阵营。使用Apache,您可以将.htaccess文件放在任何为项目提供一些附加规则的目录中。用lighttpd不可能吗?

尝试:

  • subdir / lighttpd.conf.d
  • subdir / lighttpd.conf
  • subdir / lighttpd.d

还有subdir/subdir.<conf.d|conf|d>等,似乎没有任何作用。用lighttpd不可能吗?我需要为子目录中的每个项目编辑/etc/lighttpd/lighttpd.conf吗?

1 个答案:

答案 0 :(得分:0)

Lighttpd不是Apache,因此您必须习惯lighttpd这样的工作方式。不幸的是,这关闭了很多来自Lighttpd的人,因为它没有.htaccess的等效项。

Lighttpd也只有一个中央配置文件。但是,它确实具有includes的概念,因此,如果您要为每个虚拟主机分配一个单独的配置文件,则可以执行以下操作:

在您的/etc/lighttpd/lighttpd.conf中,设置每个虚拟主机,如下所示:

$HTTP["host"] == "example.com" {
    include "example.com.conf"
}

然后在这种情况下,您可以为每个虚拟主机创建单独的配置/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 = ("")
}

以这种方式执行操作的好处是您可以为特定的虚拟主机设置使用自定义配置。例如,为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和所有代理设置到节点应用程序。