gpt4 book ai didi

php - 强制 Heroku PHP 应用程序对 www 和非 www 版本都使用 https

转载 作者:可可西里 更新时间:2023-11-01 00:39:45 25 4
gpt4 key购买 nike

我在 Heroku 上有一个 PHP 应用程序,带有 www 版本域名的 SSL 证书。我需要所有请求(对 www 和非 www)都通过 https 访问,并且我已经添加了 .htaccess 来影响。但是,仍然存在用户可以访问 http 版本的情况,我不明白为什么。

这是我的 .htaccess:

RewriteEngine on

RewriteCond %{HTTPS}::%{HTTP_HOST} ^off::(?:www\.)?(.+)$
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R]

我的理解是,这应该强制所有用户通过 https://www 访问,但这并不总是发生。例如,Google 有时会提供不带 https 的搜索结果,而是打开不安全的 http 链接。

关于我做错了什么的想法?

最佳答案

首先重定向到 :443 上的相同主机名,然后重定向到 www.。普通的 www. 只是 DNS 中的别名,而大多数网站使用较短的非 www 主机名。您可能必须扩展证书,因为它需要明确添加两个主机名,除非它是通配符。

# rewrite to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如果您想将所有内容重写为 www.(或证书上的任何内容),只需在下面添加另一条规则。第一次访问时,非 SSL 规则 [L] 是最后一步,下次访问时,SSL 规则 [L] 是重写的最后一步。

# rewrite to www.
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

另请参阅此答案 here ,关于带有强制 SSL 的 robots.txt

当它“仍然可以使用 HTTP”时...可以考虑将 .htaccess 文件放在另一个位置 - 或者为每个主机名创建目录,这只是重定向。

关于php - 强制 Heroku PHP 应用程序对 www 和非 www 版本都使用 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com