【问题标题】:How to implement SSL/htaccess into a simple non-cms website如何在一个简单的非 cms 网站中实现 SSL/htaccess
【发布时间】:2020-02-26 15:10:36
【问题描述】:

我自己编写了一个网站(html、css、一点 jquery/javascript 和 php,带有数据库连接)。它本质上只是一个简单的组合,包含文本、照片/设计/视频和一些 pdf 文件的轮播。因此,除了让我自己简单地登录以上传其他照片或设计之外,不涉及任何用户。这些照片、设计和视频都保存在一个简单的数据库中。

每当我访问我的网站时,例如safari 浏览器,safari 让我知道该网站“不安全”,因为我没有 SSL 证书或 .htaccess 文件。 (所以,我的网站是http://example.com 而不是https://example.com)。但是,无论浏览器栏中的“不安全”通知如何,它都能正常工作。

我已经联系了托管公司,他们告诉我创建一个 .htaccess 文件并将其放在 public_html 文件夹中。

这是该文件的内容:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
SetEnvIf X-Forwarded-Proto "https" HTTPS=on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

但是,当我将它添加到我的 public_html 文件夹时,我的网站根本无法运行。当我转到 example.com 时,它会正确重定向到 https://example.com,但我收到此通知:

找不到

在此服务器上找不到请求的 URL。

此外,在尝试访问时遇到 404 Not Found 错误 使用 ErrorDocument 来处理请求。

当我删除 .htaccess 文件时,它会再次工作(但根据我的浏览器是不安全的)。

托管公司回复说:“我们不是网站建设者,所以我们无法帮助您”,所以我不知道如何解决这个问题。因此这篇文章。

在没有 cms 依赖的情况下如何解决这个问题?

【问题讨论】:

  • 我们也没有建立你的网站,所以我们也不知道它在内部是如何运作的。但是,如果您在尝试访问 https://example.com/ 的根目录时得到了 404,而 HTTP 版本可以工作 - 那么我的第一个猜测是,这会被“路由”到不同的目录开始。当您再次删除此 .htaccess,然后尝试直接在浏览器中访问 https://example.com/ 时会发生什么?如果这也不起作用,那么这通常是您的托管设置有问题,与这些重写无关。
  • 当我删除它时,它仍然重定向到 https。当我删除它+清除我的历史记录/缓存时,它会再次起作用。所以,总而言之:我的网站在没有 .htaccess 文件的情况下运行良好。我知道您不会知道我的网站在内部是如何工作的,但我认为当我添加 .htaccess 文件时,我在某处遗漏了一些(对您而言)明显的代码:当您不使用 CMS 时需要的代码,但是我不知道。
  • “然后它再次工作” - 究竟什么“再次工作” - 通过 HTTP 或 HTTPS 访问它?
  • 通过HTTP://example.com 访问它。所以是不安全的。当我不将 .htaccess 文件添加到我的服务器并尝试访问 example.com 时,它会给出与我添加 .htaccess 文件并尝试访问 example.com 时相同的通知。
  • 看,那么它与您尝试重写为 HTTPS 没有任何关系,但是您的网站首先无法通过 HTTPS 正确访问。如果您的托管服务商应该为您配置 SSL,那么您应该询问他们发生了什么。

标签: php html .htaccess security ssl-certificate


【解决方案1】:

错误不在代码上,它取决于apache配置,如果您可以访问服务器ssh,请查看此工具:https://certbot.eff.org/。如果你不是,托管公司必须解决你的问题。

【讨论】:

  • 谢谢,确实是配置。未启用“使用符号链接”选项,这导致了问题。
猜你喜欢
  • 2019-09-14
  • 2012-03-25
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
相关资源
最近更新 更多