【发布时间】: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