url rewrite, nginx throw 404 errors, nothing in error logs

11,704

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;
Share:
11,704

Related videos on Youtube

civilians
Author by

civilians

Updated on September 18, 2022

Comments

  • civilians
    civilians over 1 year

    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;
    
                 }
    }