Convertendo o .htaccess para nginx. Reescreva não funcionando como deveria

1

Não consigo converter o .htaccess para a configuração do nginx. Eu tenho tentado usar ferramentas de conversão online. .htaccess para converter está seguindo:

RewriteEngine on
RewriteCond %{REQUEST_URI} !/public
RewriteCond %{REQUEST_URI} !/index.php
RewriteRule ^(.*)$ index.php/?params=$1 [NC]

Eu tenho tentado usar a seguinte configuração do nginx.

location / {
    rewrite ^(.*)$ index.php/?params=$1;
}

Isso simplesmente não está funcionando como deveria. Também dá acesso a outros arquivos neste diretório. Eu quero apenas index.php estar disponível. E até mesmo isso precisa estar funcionando com as regras do .htaccess.

A instalação do apache / httpd não é possível no servidor de produção. E não quero que recursos inúteis executem o apache dentro da janela de encaixe.

    
por Niko9911 25.05.2017 / 18:15

1 resposta

1

No Apache, você tem essas diretivas RewriteCond para excluir !/public e /index.php . Em Nginx, basta adicionar um location s separado para eles:

location /public {
}
location = /index.php {
}

Seu rewrite está quase lá, mas ao contrário do Apache, o substituição string no Nginx é sempre root relative (não location relative) e deve ter o primeiro / . Além disso, sugiro remover a barra entre php/? como desnecessário.

location / {
    rewrite ^(.*)$ /index.php?params=$1;
}
    
por 26.05.2017 / 07:09