【问题标题】:404 Error while using https with php script将 https 与 php 脚本一起使用时出现 404 错误
【发布时间】:2023-03-07 13:36:01
【问题描述】:

如果我通过 http 访问它,我正在开发一些可以正常工作的 php 脚本。但是当我尝试通过 https 前缀服务器访问它时返回 404 错误。我在这里做错了什么?

【问题讨论】:

  • 你的浏览器能打开网址吗?
  • 将您的 HTTPS 服务器配置为使用与您的 HTTP 服务器相同的 webroot。
  • 您必须提供更多详细信息才能让我们为您提供帮助

标签: php http https


【解决方案1】:

根据网络服务器,error_log (nginx/apache/apache2) 指令及其记录错误的位置将帮助您了解问题发生的位置。 404 表示该文件不存在或未正确设置网络服务器提供该文件的权限。由于它只发生在 HTTPS 上,因此很有可能正如 hakre 所建议的那样,您的 HTTPS 服务器可能没有使用与 HTTP 相同的文档根目录。

发布有关网络服务器类型、错误日志中显示的内容(如果有)的信息,将帮助 stackoverflow.com 上的每个人更好地了解您的问题,并提出适当的答案。

基于名称的虚拟主机无法使用 HTTPS 正常运行。您可以使用 HTTPS 为 1 个 IP 地址拥有 1 个虚拟主机:http://wiki.apache.org/httpd/NameBasedSSLVHosts

通常,在同一个 IP 地址和端口上托管多个 SSL 虚拟主机是不可能的。这是因为 Apache 需要知道主机的名称才能选择正确的证书来设置加密层。但是被请求的主机名仅包含在 HTTP 请求标头中,这些标头是加密内容的一部分。因此,只有在已经协商加密之后才能使用它。这意味着无法选择正确的证书,客户端将收到证书不匹配警告并容易受到中间人攻击。

实际上,Apache 将允许您配置基于名称的 SSL 虚拟主机,但它始终会使用第一个列出的虚拟主机(在选定的 IP 地址和端口上)的配置来设置加密层。在某些特定情况下,可以为多个虚拟主机使用单个 SSL 配置。特别是,如果 SSL 证书适用于所有虚拟主机,这将起作用。

【讨论】:

  • 正如我的回答中所述,您不能使用不同的证书设置基于名称的 ssl 主机并不完全正确。 Apache2 支持 NI,这使这成为可能...如果您可以不支持 IE
  • 我联系了我的主机提供商并询问了他这里线程中提到的问题。他确实向我提供了服务器缺少支持 https 连接的配置的信息。它已被修复。感谢您的帮助
【解决方案2】:

请检查并再次检查您的服务器配置 - 尤其是 DocumentRoots。

可以使用 SNI(服务器名称指示 - 一种相对较新的 TLS 扩展)在 NameBasedVirtualHosting 上使用 SSL。

大多数主要服务器和几乎所有客户端都支持 SNI。

Apache2 从 2.2.12 版本开始支持它,带有 backport 补丁的 Apache、nginx、lighthttpd 和 cherokee 都支持它。

请参阅:http://de.wikipedia.org/wiki/Server_Name_Indication 了解更多信息

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 2019-02-13
    • 2023-04-02
    相关资源
    最近更新 更多