use*_*648 7 nginx http-redirect
我有一个网页,http重定向有点破碎.
目前的行为是这样的:
www.example.com,example.com,http://www.example.com,http://example.com,https://www.example.com都被重定向到https://www.example.com
和
https://example.com收到错误提示拒绝连接.
我希望行为像这样:
example.com,http://example.com,https://example.com重定向到https://example.com
www.example.com,http://www.example.com,https://www.example.com重定向到https://www.example.com
这是我的Nginx配置文件
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location ~ /.well-known {
allow all;
}
location / {
try_files $uri $uri/ =404;
}
}
Run Code Online (Sandbox Code Playgroud)
原因是因为我希望这些链接起作用
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com
您有两个独立的问题:
example.com无论最初访问哪个特定域,您的请求都会重定向到。发生这种情况是因为$server_name您使用的变量实际上是给定server上下文中的静态变量,并且与$http_host.
正确的方法是使用$host代替(这基本上是$http_host一些边角清理)。
https://example.com,但没有https://www.example.com。您的问题中没有足够的信息来查明此问题的确切根源。
这可能是 DNS 问题(A/在未对端口进行适当绑定的 IP 地址处设置AAAA的记录)。example.comhttps
可能是证书不匹配的问题:
您的证书涵盖example.com和吗www.example.com?如果没有,那么你就不能两者兼得。
如果您有单独的证书,您可能还需要获取单独的 IP 地址,否则可能会因缺乏SNI而导致大量用户无法访问您的站点。
值得注意的是,还应该指出的是,在访问网站的方式上没有统一的符号通常是一种草率的做法。特别是如果您关心 SEO,最好的做法是决定是否要使用 SEO www,并坚持下去。
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |