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