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