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
我的Nginx配置中缺少什么?我无法从所有类似的问题中找到答案。一些答案说使用“ if”语句,但是Nginx doc专门说不要这样做,因为它将应用于所有请求。
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;
}
}
答案 0 :(得分:1)
删除第二个块example.com
中的server_name
并将listen 443
添加到第二个块。
希望有帮助。
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;
}
}