Назад | Перейти на главную страницу

Правило перезаписи Lighttpd для микрофреймворка Flight PHP

Я использую микрофреймворк Flight PHP, и он включает в себя собственный маршрутизатор, и ему нужен сервер для перезаписи запросов в файл index.php.

В нем есть правила перезаписи как для Apache, так и для Nginx, но мне не повезло, я использую lighttpd в продакшене, и меня не особо интересует их изменение.

Так что я ненавижу быть тем парнем, который просто говорит: дайте мне решение ... Но серьезно, помогите мне, я понятия не имею, как переписывать запросы Lighttpd.

Конфигурация Apache выглядит так:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]

И конфиг Nginx такой:

server {
    location / {
        try_files $uri $uri/ /index.php;
    }
}

Моя собственная конфигурация Lighttpd в настоящее время выглядит так:

$HTTP["host"]  == "zyx.abc.dk"{
        server.document-root = "/var/www/app1/zyx"
        accesslog.filename         = "/var/log/lighttpd/zyx-log.log"
        url.rewrite-once = ( "(.*)" => "/index.php" )
}

Но не работает. Как я могу переписать поддомен, как указано выше, чтобы заставить Flight PHP работать? Мне нравится фреймворк, поэтому мне было бы очень грустно, если бы мне пришлось его менять.

Спасибо, парни! :)

  • ваше правило перезаписи не выполняло "QSA" - оно удалило строку запроса
  • ваша перезапись также сработала для существующих файлов (не соответствует !-f и !-d)

Следующее должно сохранять строку запроса и запускать только в том случае, если запрошенный путь не является обычным реальным файлом (но триггерами для каталогов, которые не соответствуют apache !-d - хотя я бы сказал, что !-d вероятно ошибка в конфигурации apache).

url.rewrite-if-not-file = ( "(\?(.*))?" => "/index.php$1" )

Вы также можете использовать привязанное регулярное выражение:

url.rewrite-if-not-file = ( "^.*(\?(.*))?$" => "/index.php$1" )