Преобразование .htaccess в lighttpd для подкаталога - PullRequest
0 голосов
/ 20 октября 2019

Я новичок и пытаюсь преобразовать 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=$1 [QSA,L]

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

Теперь мое решение для догадок было таким, но оно не работает, и я не понимаю, как я могу заставить его работать:

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

Кто-нибудь может помочь? Спасибо

1 Ответ

0 голосов
/ 21 октября 2019

правила перезаписи lighttpd соответствуют полному URL-пути + строке запроса, тогда как $HTTP["url"] - это просто URL-путь (да, я вижу, что это может немного сбивать с толку), а $HTTP["query-string"] - просто запрос-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=$1${qsa}",
        "" => "/index.php?uri=${url.path}${qsa}",
    )
}
server.follow-symlink = "enable"
...