尝试从 HTTP 重定向到 HTTPS 时出现 302“找到”页面

问题描述 投票:0回答:1

我正在尝试为客户端站点设置从 HTTP 到 HTTPS 的重定向。我将以下代码添加到 .htaccess 文件中:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

但是这样做会让用户在访问网站上的 HTTP 页面时看到 302“Found”页面,而不是将他们重定向到 HTTPS 版本。

我试图找出为什么会发生这种情况,以及如何解决问题以获得预期的结果。该网站已经强制使用了

www
子域 - 这可能会导致该问题..?

在 Ubuntu 服务器上使用 apache。

.htaccess redirect http-redirect http-status-code-302
1个回答
0
投票

这听起来像是您与其他指令发生冲突。您的规则中缺少

L
标志,因此处理将继续通过文件而不是触发立即重定向。

您还应该明确并包含

R
标志,当将其更改为 301(永久)重定向时,您需要执行此操作。

另请注意,此规则必须位于文件顶部附近在任何现有重写之前

例如:

:
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=302,L]

我将 pattern

(.*)
更改为
^
,这样效率更高,因为您没有在 substitution 中使用反向引用。

© www.soinside.com 2019 - 2024. All rights reserved.