nginx redirects not working when after adding slash

Posted March 23, 2017 16.5k views
NginxDjangoUbuntu 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 {


    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

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
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;