【问题标题】:.htaccess not redirecting http to https.htaccess 没有将 http 重定向到 https
【发布时间】:2018-01-21 18:18:53
【问题描述】:

我在云服务器上托管了域www.supergenscript.com,其中仅上传了一个正在建设的索引页面。没有 .htaccess 文件,所以我创建了一个 .htaccess 文件并使用 filezilla 将其上传到服务器。我想自动将我的网站从 http 重定向到 https。这些是我的 .htaccess 文件的内容。

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?supergenscript\.com
RewriteRule ^(.*)$ https://www.supergenscript.com/$1 [R=301, L]

除了这些代码行之外,没有其他任何东西写在那里。我希望这可以工作,但这不会自动将我的域重定向到 https。请帮我解决这个问题。

【问题讨论】:

标签: php apache .htaccess redirect mod-rewrite


【解决方案1】:

你可以使用:

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

将 .htaccess 上传到您的根目录。

第 1 行:检查模块 - mod_rewrite 已激活。

第 2 行:启用重写引擎。

第 3 行: 检查 HTTPS 协议是否打开,如果没有,则执行第 4 行的内容。

第 4 行:通过状态码 301 =(永久重定向)将所有请求重定向到 HTTPS。

第 5 行: 关闭 - mod_rewrite!

【讨论】:

  • 用这段代码替换了我之前的代码.. 仍然没有重定向.. 你可以检查我的 URL.. 为什么它不工作的人我只是感到沮丧,因为这应该工作.. !!跨度>
  • 冷静! :) 这是工作的一部分。 :) 我访问了您的网站,并且重定向运行良好。 可能是您没有删除缓存吗? 如果您使用 Windows 系统清除缓存,请使用“cmd”“ipconfig /flushdns" 并清除您的浏览器缓存。如果不是,请添加您使用的操作系统(Debian 8、NGINX ...)的注释并将 htaccess 上传到您的根目录。我稍后会检查它。
  • 我看到您使用 Cloudflare-Nginx。如果出现错误 525,则 ssl 握手失败。 support.cloudflare.com/hc/en-us/articles/…
  • 重定向现在工作正常,因为我已经使用 CloudFlare 对其进行了配置。他们在 SSL 设置中提供了“始终使用 HTTPS”的选项,我后来注意到了这一点。我进一步删除了该 htaccess 文件,因为此时不再需要它。谢谢你的帮助。您的答案是正确的,但对于通常在不使用 CloudFlare 的情况下托管的网站。因为这会帮助其他人,所以我会接受它。再次感谢:)