transformando uma reconfiguração do apache em uma reconfiguração nginx

2

Eu tinha um projeto no qual eu tinha que redirecionar todos os arquivos não encontrados para o index.php. Eu fiz isso no apache com a colocação de um arquivo .htaccess na pasta do meu projeto. o conteúdo do arquivo é -

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

agora eu queria o mesmo no nginx. aqui está como meu nginx.conf se parece com

root   /usr/local/apache2/htdocs;
index  index.php index.html index.htm;
location /project/ {
            root   /usr/local/apache2/htdocs;
            index  index.php index.html index.htm;
            try_files $uri $uri/ index.php;
}

agora, sempre que faço uma solicitação como http://localhost/project/hello , essa solicitação deve ir para http://localhost/project/index.php , mas isso diz File not found .

Agora, porque pensei que isso funcionaria é porque, como a diretiva root dentro do bloco de localização substitui a diretiva root fora do bloco (embora haja valores iguais), o módulo de reescrita procuraria /usr/local/apache2/htdocs/project/index.php . O que eu sinto falta aqui?

UPDATE

Esta configuração funciona

root   /usr/local/apache2/htdocs;
location /project/ {
            index  index.php index.html index.htm;    #effectively root here is /usr/local/apache2/htdocs
            try_files $uri $uri/ /project/index.php;
 }

Mas não vejo por que isso deve funcionar, porque, conforme apontado no diretório aqui , a correspondência encontrada no bloco de localização é acrescentado ao valor de root directive

    
por lovesh 09.03.2012 / 16:43

1 resposta

5
 location /project/ {
             root   /usr/local/apache2/htdocs;
             index  index.php index.html index.htm;
-            try_files $uri $uri/ index.php;
+            try_files $uri $uri/ /project/index.php;
 }

Talvez você precise especificar a raiz no URL? Caso contrário, não há ponto de referência para o URL. O servidor não pode adivinhar em qual diretório foi o último ou que o usuário pretendia. Se isso não conseguir o que você quer, comente de volta e eu vou criar um servidor para fazer um teste rápido.

    
por 09.03.2012 / 16:48

Tags