
Estou usando o microframework Flight PHP, que inclui seu próprio roteador e precisa que o servidor reescreva as solicitações no arquivo index.php.
Ele apresenta regras de reescrita para Apache e Nginx, mas para meu azar, estou usando lighttpd em produção e não estou realmente interessado em mudar isso.
Então, odeio ser aquele cara que só diz: Me dê a solução.. Mas sério, alguém me ajude, não tenho ideia de como reescrever solicitações Lighttpd.
A configuração do Apache é assim:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
E a configuração do Nginx assim:
server {
location / {
try_files $uri $uri/ /index.php;
}
}
Minha própria configuração do Lighttpd atualmente se parece com esta:
$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" )
}
Mas não funciona. Como posso fazer com que o subdomínio seja reescrito como acima, para fazer o Flight PHP funcionar? Gosto da estrutura, então ficaria muito triste se tivesse que mudá-la.
Obrigado rapazes! :)
Responder1
- sua regra de reescrita não fez "QSA" - excluiu a string de consulta
- sua reescrita também foi acionada para arquivos existentes (não correspondendo
!-f
e!-d
)
O seguinte deve manter a string de consulta e acionar apenas se o caminho solicitado não for um arquivo real normal (mas acionadores para diretórios, que não correspondem ao apache !-d
- embora eu argumente que !-d
provavelmente é um bug na configuração do apache).
url.rewrite-if-not-file = ( "(\?(.*))?" => "/index.php$1" )
Você também pode usar uma expressão regular ancorada:
url.rewrite-if-not-file = ( "^.*(\?(.*))?$" => "/index.php$1" )