我有一个网页,其中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;
}
}
原因是因为我希望这些链接正常工作
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com
答案 0 :(得分:3)
您有两个独立的问题:
example.com
,无论最初访问哪个特定域。这是因为您使用的$server_name
变量实际上是给定server
上下文中的静态变量,并且与$http_host
的关系非常遥远。
正确的方法是使用$host
代替(基本上$http_host
进行一些边角清理)。
https://example.com
联系时遇到连接问题,但未https://www.example.com
。您的问题中没有足够的信息来确定此问题的确切来源。
这可能是一个DNS问题(A
/ AAAA
设置在IP地址的example.com
记录,其中未对https
端口进行适当的绑定)。
这可能是证书不匹配的问题:
您的证书是否涵盖example.com
和www.example.com
?如果没有,那么你就不能同时拥有这两者。
如果您有单独的证书,您可能还需要获取单独的IP地址,否则可能会因为缺少SNI而无法阻止大量用户访问您的网站。
值得注意的是,还应该指出的是,对于访问网站的方式没有统一的表示法通常是草率的做法。特别是如果您对SEO有任何顾虑,最好的做法是决定是否要与www
一起使用,并坚持使用。
答案 1 :(得分:1)
你需要这样的东西:
class Car{
private final int maxSpeedInMph = 100;
private int speedInMph = 0;
public void accellerateBy(int speedDiffInMph){
if( maxSpeedInMph >=speedInMph + speedDiffInMph )
speedInMph += speedDiffInMph;
else
speedInMph = maxSpeedInMph ;
}
public void accellerateTo(int newSpeedInMph){
if( maxSpeedInMph >= newSpeedInMph)
speedInMph = newSpeedInMph;
else
speedInMph = maxSpeedInMph ;
}
public void decellerateBy(int speedDiffInMph){
if( 0<=speedInMph - speedDiffInMph )
speedInMph += speedDiffInMph;
else
speedInMph = 0;
}
public void emengencyBreak(){
speedInMph = 0;
}
// you get the idea?
}
您的所有请求都将最终发送至https://example.com。 您的ssl证书也应该对https://www.example.com有效,我注意到您说的是。{/ p>