将 .htaccess 转换为子目录的 lighttpd

Converting .htaccess to lighttpd for a subdirectory

我是新手,正在尝试将 htaccess 转换为 lighttpd 格式,但我尝试的所有方法都不起作用。 我有一些 example.com 的规则,现在我想添加一个名为 /test 的新子目录,并仅为该目录使用 htaccess 规则(这甚至可能吗?)。 无论如何,这是我要转换的 htaccess:

Options +FollowSymlinks

RewriteRule ^.*\.(gif|png|jpe?g|bmp|css|js|swf|wav|avi|mpg|ttf|woff)$ - [NC,L]

RewriteRule ^dashboard/ - [R=403,L,NC]
RewriteRule ^admin/ - [R=403,L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.sa$ index.php?sa= [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?uri= [PT,L]

现在,我的猜测解决方案是这样的,但它不起作用,我不明白如何让它起作用:

   $HTTP["url"] =~ "^/test" {
$HTTP["url"] !~ "^/(dashboard|admin)/" {
    url.access-deny = ("")
}
url.rewrite-if-not-file = (
    "^/(.*)$" => "/index.php?uri=",
    "^/(.*/).sa$" => "index.php?sa=",
)
server.follow-symlink = "enable"}

有人能帮忙吗? 谢谢

lighttpd 重写规则匹配完整的 url-path + query-string,而 $HTTP["url"] 只是 url-path(是的,我明白了有点混乱)和 $HTTP["query-string"] 只是查询字符串。

以下使用了 lighttpd 1.4.50(一年前发布)中可用的一些语法。lighttpd 的当前版本是 lighttpd 1.4.54。 (如果您使用的是 lightttpd 1.4.45,那么您的发行版,呃,落后一点点)

$HTTP["url"] !~ "^/(dashboard|admin)/" {
    url.access-deny = ("")
}
$HTTP["url"] !~ "\.(?i:gif|png|jpe?g|bmp|css|js|swf|wav|avi|mpg|ttf|woff)$" {
    url.rewrite-if-not-file = (
        "^(/.*)\.sa(\?.*)?$" => "index.php?sa=${qsa}",
        "" => "/index.php?uri=${url.path}${qsa}",
    )
}
server.follow-symlink = "enable"