Como posso usar o arquivo .htaccess convertido na configuração Nginx?

1

São cerca de 5 dias em que estou tentando lançar meu website sem sucesso. O problema é que eu uso o apache no local e meu site funciona bem no local, e meu servidor usa o nginx e não consigo usar a conversão .htaccess dentro da configuração do nginx.

Aqui está uma estrutura simplificada do meu site:

/mywebsite
    /application
    /files
        file1.php
        .htaccess
    /public
        /css
        /js
.htaccess

Veja? Eu tenho dois arquivos .htaccess . Um está localizado na raiz e outro está dentro do diretório files . Tudo funciona no localhost, desde que eu use apache no localhost. Agora preciso fazê-lo funcionar no servidor que usa nginx .

Eu uso este site para converter o conteúdo dos arquivos htaccess em configuração nginx.

Antes de mais nada, devo colar o resultado da conversão em qual arquivo? (onde está localizado o arquivo de configuração nginx? /etc/nginx/nginx.conf ?)

E como posso lidar com esses dois arquivos .htaccess ? Devo fazer dois arquivos nginx também?

.htaccess na raiz:

RewriteEngine on
Options -Indexes

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([\s\S]*)$ index.php?rt=$1 [L,B,QSA]

ErrorDocument 404 /error404.html

Options -Indexes

<Files *.php>
    Order Deny,Allow
    Deny from all
    Allow from ::1
</Files>

<Files index.php>
    Order Allow,Deny
    Allow from all
</Files>

.htaccess file que está dentro do diretório files :

<Files *.php>
   Allow from all
</Files>
    
por Martin AJ 09.07.2018 / 14:56

1 resposta

0

No nginx, todas as configurações específicas do site são incluídas em um bloco server e os blocos location são usados para adicionar diretivas de configuração diferentes para URLs particulares.

Em geral, a filosofia é bem diferente do Apache2, então você precisa estudá-la para entender como fazer uma configuração similar com ela.

No seu caso, as diretivas de configuração do nginx podem ser algo como isto:

location / {
    try_files $uri $uri/ /index.php?rt=$request_uri;
}

location ~ \.php$ {
    deny all;
}

location ^~ /index.php {
    # include here the configuration items from nginx default location ~  \.php$ block
}

location ^~ /files {
    # include here either PHP configuration directives from location ~ \.php$ block if you want PHP scripts executed from here. If you do not want PHP scripts to be executed, then use
    allow all;
}

Essas diretivas estão incluídas na configuração principal do nginx ou na configuração específica do site que existe no diretório /etc/nginx/sites-available .

Algumas explicações sobre os blocos:

O primeiro bloco location é a implementação padrão do controlador frontal no nginx. Isso significa que o nginx primeiro verifica se o arquivo requerido é encontrado em algum lugar no servidor, se ele existe. Caso contrário, ele envia a solicitação para index.php , com a parte original do pedido URI como um argumento para ?rt . Isso é um pouco diferente de sua implementação, pois você usa um regex para limitar os possíveis URIs passados como argumento.

O segundo bloco location rejeita o acesso a todos os URIs que terminam com .php $.

O terceiro bloco adiciona uma exceção para index.php , que é processada usando o backend do PHP.

O quarto bloco envia solicitações de script PHP para o backend do PHP ou simplesmente permite enviá-las ao usuário.

Como aviso de isenção de responsabilidade, não posso testar essas regras, pois não conheço seu ambiente de software, portanto, elas podem não atender aos seus requisitos ou podem falhar em algumas partes.

    
por 10.07.2018 / 01:25