[英]nginx redirect all non-WWW to HTTPS WWW
Here is what happens:
example.com -> https://example.com
http://example.com -> https://example.com
www.example.com -> -> https://www.example.com
This is what I want:
example.com -> https://www.example.com
http://example.com -> https://www.example.com
www.example.com -> -> https://www.example.com
What am I missing in my Nginx config?我的 Nginx 配置中缺少什么? I cannot find out from all similarly asked questions.
我无法从所有类似的问题中找出答案。 Some answers say to use an "if" statement, but Nginx doc says specifically not to do this because it will apply to ALL requests.
一些答案说使用“if”语句,但 Nginx 文档明确表示不要这样做,因为它适用于所有请求。
server {
listen 80;
listen 443; # add this line
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 80;
root /var/www/html;
index index.php;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Remove example.com
in server_name
of second block and add listen 443
to second block.删除第二个块的
server_name
的example.com
并将listen 443
添加到第二个块。
Hope it helps.希望能帮助到你。
server {
listen 80;
listen 443; # add this line
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 80;
listen 443; # add this line too.
root /var/www/html;
index index.php;
# Remove example.com
server_name www.example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.