电脑能通过域名访问 手机只能在域名前面加上https://才能访问

自己搭建了个网站,也部署了ssl,
电脑能通过域名直接访问页面
手机只能在域名前面加上https://才能访问,直接用域名访问就显示404,请问这是怎么回事?该怎么解决?

当你在电脑上通过域名直接访问页面时,可能会自动进行 HTTP 到 HTTPS 的重定向,而手机浏览器可能没有进行相同的重定向。
要解决这个问题,有以下几种方法:
1.手机端解决:(解决成功的概率不高)
清除手机浏览器缓存:有时候手机浏览器会缓存旧的重定向设置,导致无法正确访问页面。尝试清除手机浏览器的缓存,然后重新尝试通过域名访问页面。

更新手机浏览器版本:如果你的手机浏览器版本较旧,可能存在一些兼容性问题。尝试更新手机浏览器到最新版本,然后重新尝试通过域名访问页面。
2.服务端解决:(专业性较强,解决成功概率高)
检查服务器配置:请确保你的服务器配置正确,包括 SSL 证书安装和配置、HTTP 到 HTTPS 的重定向设置。可以检查服务器日志以了解是否有相关错误信息。

更改重定向策略:你可以尝试在服务器端修改重定向策略,强制将 HTTP 请求重定向到 HTTPS。具体实施方法取决于你使用的服务器软件,例如 Apache 或 Nginx。

  • 这篇博客: 关于在外网环境下浏览器不能调用浏览器录音功能问题解决中的 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • server {
    listen 443 ssl;
    server_name xxxx;  # localhost修改为您证书绑定的域名。
    ssl on;   #设置为on启用SSL功能。
    root /usr/local/Web/src/;
    index index.html index.htm;
    ssl_certificate cert/xxxxxx.pem;   #将domain name.pem替换成您证书的文件名。
    ssl_certificate_key cert/xxxxx.key;   #将domain name.key替换成您证书的密钥文件名。
    ssl_session_timeout 5m;
    ssl_ciphers xxxxxx;  #使用此加密套件。
    ssl_protocols TLSv1;   #使用该协议进行配置。
    ssl_prefer_server_ciphers on;
    location  ~* .(html|js|css)$ {
    root /usr/local/Web/src/;   #站点目录。
    index index.html index.htm;
    }
    }
    

    上面配置的含义是访问https的时候nginx根据location的正则表达式匹配跳转到对应的页面,这里开启了443端口的监听,因为https协议默认的端口号为443,http协议默认为80

    重点来了
    如果我们有其它非https的接口工程如何通过nginx来实现不在项目中配置https相关的认证代码,从而实现http协议升级https ,让前端调接口的时候不会报跨域异常

    有两种方式,一种是另开一个端口比如我原端口是5280通过nginx另开一个5281端口监听,访问5281的时候转发到5280再加上一些ssl认证信息就能够直接完成升级.一种则直接再443端口中多加几个location的正则匹配

    配置如下:
    
    server {
    	listen 5281 ssl;
        server_name www.baidu.com; 
    	ssl_certificate cert/xxxxx.pem;   #将domain name.pem替换成您证书的文件名。
    	ssl_certificate_key cert/xxxxx.key;   #将domain name.key替换成您证书的密钥文件名。
    	ssl_session_timeout 5m;
    	ssl_ciphers xxxxx  #使用此加密套件。
    	ssl_protocols TLSv1;   #使用该协议进行配置。
    	ssl_prefer_server_ciphers on;
    		location /{
                proxy_pass http://xxx.xxx.xx.xx:5280;
    			proxy_set_header   X-Real-IP            $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_set_header   Host                   $http_host;
                proxy_set_header   X-NginX-Proxy    true;
                proxy_set_header   Connection "";
                proxy_http_version 1.1;
      
                proxy_connect_timeout 1; 
                proxy_send_timeout 30; 
                proxy_read_timeout 60;
            }
    		
    }
    

这可能是因为你的手机浏览器缓存了http的访问记录,所以直接访问域名会显示404。你可以尝试清除浏览器缓存,或者在手机浏览器中输入https://域名来访问网站。如果你想让所有的访问都自动跳转到https,你可以在apache的web.xml中进行设置

这种情况可能是由于以下原因导致的:

域名解析问题:确保手机和电脑都能够正确解析该域名到相同的IP地址。你可以尝试在手机上使用其他应用或浏览器访问同样的域名,以确定是否是特定设备的解析问题。

代理配置问题:检查手机的网络代理配置,确保没有设置代理或代理配置正确。代理服务器可能会导致无法正常访问某些网站或服务。

HTTPS强制重定向:有些网站可能强制将HTTP请求重定向到HTTPS,对于只输入域名而不添加协议前缀的请求,电脑上的浏览器可能默认使用了HTTP协议,而手机上的浏览器可能默认使用了HTTPS协议。你可以尝试在电脑上手动在浏览器中输入https://域名来访问,看是否仍然可以正常访问。

1.手机浏览器支持问题,可以通过访问http://www.baidu.com,试下看是否会跳到https
2.nginx中配置http “redirect”