ozwiz
By:
ozwiz

nginx redirects not working when after adding slash

March 23, 2017 317 views
Nginx Django Ubuntu 16.04

I am using nginx with django. Actually i am moving an old site to a new domain. In the process I have also updated the url structure of post and pages. Here is how nginx configuration looks like:

server {

    server_name 44.41.211.161;

    access_log off;

    location /static/ {
        alias /home/project/Sites/project/static/;
    }

    rewrite ^/old-url$ http://mysite.com/updated-url permanent;


    location /media/ {
        alias /home/project/Sites/project/media/;
    }

    location / {
                proxy_pass http://127.0.0.1:8001;
                proxy_set_header X-Forwarded-Host $server_name;
                proxy_set_header X-Real-IP $remote_addr;
                add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
}

If i visit http://mysite.com/old-url nginx perfectly redirects old-url to http://mysite.com/updated-url but if i visit http://mysite.com/old-url/ (with a trailing slash) it returns a 404 error. How do i prevent a 404 error and redirect http://mysite.com/old-url/ to http://mysite.com/updated-url

1 Answer
hansen March 23, 2017
Accepted Answer

Remove the dollar sign, to redirect anything that starts with /old-url

    rewrite ^/old-url http://mysite.com/updated-url permanent;

Or allow either-or with a question mark

    rewrite ^/old-url/?$ http://mysite.com/updated-url permanent;
Have another answer? Share your knowledge.