如何解决Nginx-非www到www重定向不适用于子文件夹
我正在尝试将example.com/
。*下的所有内容重定向到www.example.com/..。通过调整Nginx
中启用网站的设置。
我设法使其仅可用于主页,但是当我尝试访问诸如example.com/es/
之类的子文件夹时,它不会重定向到www.example.com/es/
。
这些是我当前的设置:
server {
server_name example.com www.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /core/static {
alias /home/andrea/agency/core/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-Nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.com) {
return 301 https://www.$host$request_uri;
} # managed by Certbot
listen 80;
server_name example.com www.example.com;
return 404; # managed by Certbot
}
尽管$request_uri
部分会处理non-www
域下的所有内容,但似乎不起作用。
您是否有任何提示,为什么这表现不如预期?非常感谢!
解决方法
对于任何有类似问题的人,这就是我最终解决的方式
server {
if ($host = example.com) {
return 301 https://www.example.com$request_uri;
}
server_name example.com www.example.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /core/static {
alias /home/andrea/agency/core/static/;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
}
if ($host = example.com) {
return 301 https://www.example.com$request_uri;
}
server_name example.com www.example.com;
listen 80;
return 404;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。