如何使用 htaccess 强制重定向到安全域 [重复]

Posted

技术标签:

【中文标题】如何使用 htaccess 强制重定向到安全域 [重复]【英文标题】:How do i force redirect to secure domain with htaccess [duplicate] 【发布时间】:2018-06-21 10:11:42 【问题描述】:

当来自不安全的 http:// 的请求到达我的网站时,我希望它被重定向到 https://。

我的根目录中同时包含 htmlphp 文件。根据请求路径,我将决定是提供 HTML 文件还是 PHP 文件。

下面是我现有的 .htaccess 文件。

RewriteEngine On
RewriteRule "^(news_[^.]+|faq|terms|get).*" "$1.php" [NC,L]

上述配置适用于提供来自安全和不安全域的文件。

但是当我尝试通过更改上述配置来强制使用 SSL 时

RewriteCond %HTTP:X-Forwarded-Proto =http [OR]
RewriteCond %HTTP:X-Forwarded-Proto =""
RewriteCond %HTTPS !=on
# # Redirect to https version
RewriteRule ^get$ "https://example.com/get.php" [L]
RewriteRule ^faq$ "https://example.com/faq.php" [L]
RewriteRule ^terms$ "https://example.com/terms.php" [L]
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301]

它对目录中提供的所有 html 页面强制使用 SSL。但是 /get、/faq、/terms 请求超时。

我该如何解决?我哪里做错了?

【问题讨论】:

不管你应该考虑通过 https 服务所有请求。我的网站使用下面给出的 htaccess 【参考方案1】:
RewriteEngine On
### WWW & HTTPS# ensure www.
RewriteCond %HTTP_HOST !^www\. [NC]
RewriteRule ^ https://www.%HTTP_HOST%REQUEST_URI [L,R=301]
# ensure https
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteCond %HTTPS off
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301]
### WWW & HTTPS

应该这样做。编辑您的 .htaccess 以反映相同内容并将其放在根目录中。

【讨论】:

以上是关于如何使用 htaccess 强制重定向到安全域 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

htaccess:将所有域(https和http)重定向到新域

.htaccess 使用 SSL/HTTPS 将 www 重定向到非 www

如何使用 htaccess 将多个域重定向到除 1 个目录之外的另一个域?

如何将用户重定向到另一个域 .htaccess

htaccess 将旧域重定向到新域

使用特定域的 .htaccess 重定向到 HTTPS