5

below rewrite works fine:

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

but this doesnt work

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

what am i doing wrong?

below entire nginx server block

  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;

             }
}
civilians
  • 123
  • 1
  • 2
  • 8

1 Answers1

1

First, move the key rewrite out of the location block into the enclosing server block. That will simplify your logic.

Next, enable rewrite debug logging to confirm if the 404 you are getting is from the original URL, or the rewritten URL.

Finally, if the root cause is still not found enable general debug logging for Nginx:

error_log /path/to/log debug;
Mark Stosberg
  • 3,771
  • 23
  • 27