Я использую микрофреймворк 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 работать? Мне нравится фреймворк, поэтому мне было бы очень грустно, если бы мне пришлось его менять.
Спасибо, парни! :)
!-f
и !-d
)Следующее должно сохранять строку запроса и запускать только в том случае, если запрошенный путь не является обычным реальным файлом (но триггерами для каталогов, которые не соответствуют apache !-d
- хотя я бы сказал, что !-d
вероятно ошибка в конфигурации apache).
url.rewrite-if-not-file = ( "(\?(.*))?" => "/index.php$1" )
Вы также можете использовать привязанное регулярное выражение:
url.rewrite-if-not-file = ( "^.*(\?(.*))?$" => "/index.php$1" )