nginx redirects not working when after adding slash

March 23, 2017 7k views
Ubuntu 16.04 Nginx Django

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 {


    access_log off;

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

    rewrite ^/old-url$ permanent;

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

    location / {
                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 nginx perfectly redirects old-url to but if i visit (with a trailing slash) it returns a 404 error. How do i prevent a 404 error and redirect to

1 Answer

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

    rewrite ^/old-url permanent;

Or allow either-or with a question mark

    rewrite ^/old-url/?$ permanent;
Have another answer? Share your knowledge.