Como faço para replicar minha funcionalidade .htaccess no NGINX

1

Eu tenho o arquivo .htaccess abaixo no apache que redireciona todas as solicitações para app/index.php com ou sem o parâmetro GET . Acabei de instalar o NGINX e meu aplicativo não será executado. Alguém pode ajudar a replicar a mesma funcionalidade no NGINX? Obrigado.

RewriteEngine on    

Options -Indexes

RewriteRule    ^$ app/ [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ app/index.php?url=$1 [QSA,L]
    
por Bobby 14.07.2012 / 16:33

2 respostas

3

Use o módulo de reescrita . Algo como isso deve fazer isso:

location / {
  autoindex off;

  rewrite ^/$ app/ last;
  if (!-e $request_filename) {
    rewrite ^/(.*)$ app/index.php?url=$1;
  }
}
    
por 14.07.2012 / 16:40
2

Use arquivos try

Não há necessidade de usar o módulo de reescrita para a maior parte dessa configuração.

As regras de reescrita do apache significam:

  • RewriteRule ^$ app/ [L] - envia a URL / para o diretório do aplicativo
  • RewriteCond %{REQUEST_FILENAME} !-d - se o pedido não for um diretório
  • RewriteCond %{REQUEST_FILENAME} !-f - se o pedido não for um arquivo
  • RewriteCond %{REQUEST_FILENAME} !-l - se o pedido não for um symlink
  • Envie a solicitação para app/index.php?url=$1

Em nginx, o equivalente é:

# No automatic directory listings
autoindex off;

# Send the root url to the app dir
index index.php;
rewrite ^/$ app/ last;

# check if the url matches a file, directory and if not send to app/index.php
try_files $uri $uri/ app/index.php?url=$uri;

A verificação de um link simbólico é supérflua, pois um link simbólico também é um arquivo ou diretório.

    
por 24.08.2015 / 10:52