url reescrever, nginx lançar 404 erros, nada em logs de erro

1

abaixo reescrita funciona bem:

rewrite ^/city/restaurants$ /city/listings/restaurants permanent;

mas isso não funciona

rewrite ^/city/restaurants$ /city/listings/restaurants last;
rewrite ^/city/restaurants$ /city/listings/restaurants break;

o que estou fazendo errado?

abaixo do bloco inteiro do servidor nginx

  server {
          listen 80 default backlog=1024;
          server_name mydomain.com;


          client_max_body_size 20M;
          charset utf-8;
          keepalive_timeout 50;

          access_log /var/log/access_log main;
          error_log /var/log/error_log info;


          root /var/www/;
          index index.php index.phtml index.html;
  autoindex on;

   location ~ \..*/*\.php$ {
       return 403;
   }
   location ~^/sites/.*/private/{
       return 403;
   }
   location ~^/sites/.*/files/* {
       try_files $uri @rewrite;
   }
   location ~ (^|/)\. {
       return 403;
   }

   location / {

rewrite ^/city/restaurants$ /city/listings/restaurants last;

    location ~* \.php$ {
                            include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                            #fastcgi_pass unix:/var/run/php5-fpm.sock;
                            fastcgi_pass 127.0.0.1:9000;
                            #try_files $uri @rewrite;
                            }
                    try_files $uri @rewrite;
                    }

            location @rewrite {
                    rewrite ^ /index.php;
            }
            location ~* \.(?:ico|css|js|gif|jpg|jpeg|png)$
            {
                    try_files $uri $uri/;
                    expires 30d;

             }
}
    
por civilians 13.01.2016 / 12:29

1 resposta

0

Primeiro, mova a reescrita da chave do bloco location para o bloco server . Isso simplificará sua lógica.

Em seguida, ative a possibilidade de reescrever o registro de depuração para confirmar se o erro 404 você está recebendo é da URL original, ou a URL reescrita.

Finalmente, se a causa raiz ainda não for encontrada habilite o log de depuração geral para o Nginx:

error_log /path/to/log debug;
    
por 13.01.2016 / 18:52