【问题标题】:All page across domain require HTTPS跨域的所有页面都需要 HTTPS
【发布时间】:2026-02-17 23:40:02
【问题描述】:

我刚刚为我的域购买了 SSL,主机安装了它,现在所有页面都需要“HTTPS”。有没有办法在全局范围内解决这个问题,并且只在我调用它们时显示 https 页面?

例子:

example.com - 不会工作 https://example.com - 有效

我知道我必须使用 https 链接到我想要保护的页面,但没有一个页面可以正常工作,主机也无济于事。

【问题讨论】:

  • 你的意思是不会工作?当您访问非 http 时会发生什么。如果他们没有支持,可能是时候换一个新主机了。
  • @PanamaJack 它给出了一个找不到页面的错误。如果我输入 https:// 就可以了。是的,我同意,但我今天才付钱:-(
  • 您运行控制面板吗?它可能不再识别 http vhost。
  • 没有控制面板。它是一个基本网站,我只是想保护登录、注册和会员页面
  • 您在添加证书和更新虚拟主机时是否更改了 IP 地址?

标签: php mysql ssl https


【解决方案1】:

避免这种情况很重要 确保每个图像、CSS 和 Javscript 文件都在安全的 页面使用 HTTPS 访问。对于同一域上的内容,这非常简单——您只需要使用相对 URL。相对 URL 包含的“偏移” URL 需要应用于页面的绝对 URL 以便 找资源。

但是,如果您尝试访问 来自不同域的资源,因为您不能使用 用于访问资源的简单路径相对 URL。这往往 当您尝试使用第三方服务时发生 作为 Google Analytics 或第三方 Ajax 库 CDN。 谷歌分析用它的外部解决了这个问题 通过推荐使用此代码来创建 javascript 文件 动态切换协议:

var gast = (("https:" == document.location.protocol) ?
"https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gast +
"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

【讨论】:

  • 你在说什么?你甚至读过他的问题或谈话吗?
  • 这不是问题,但谢谢。我会更好地描述一下每当我尝试仅通过 http 访问任何页面时,它都会引发“找不到页面”错误。如果我使用 https,页面就会出现。这是整个域。仅仅因为他们为我安装了 SSL 并不意味着每个页面都应该是 https
  • 从 http 重定向到 https 当您尚未更新站点中的每个链接时,此位将极大地帮助您。您可以添加从 http 到 https 的直接服务器级重定向。在 Apache 中你会做这样的事情: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
【解决方案2】:

从http重定向到https

当您尚未更新网站中的每个链接时,这一点将极大地帮助您。您可以添加从 http 到 https 的直接服务器级重定向。

在 Apache 中你会做这样的事情:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

【讨论】:

    【解决方案3】:

    您可以使用 htaccess 强制 https 访问。请尝试以下操作:

    RewriteEngine On 
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
    

    请将www.yourdomain.com替换为你的

    注意:请记住为服务器开启你的 mod_rewrite

    【讨论】:

    • 这不是他想要的。他希望能够访问非 https 链接。这就是为什么我先问他发生了什么事。
    • https 访问一直处于开启状态,我希望始终开启 http 访问,并且在调用时使用 https