gpt4 book ai didi

apache - 使用 Apache Rewrite 从 HTTP 转到 HTTPS,反之亦然,但我收到 302 响应并且我的应用程序出错

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:39 25 4
gpt4 key购买 nike

我真的希望有人知道我在这里做错了什么,因为我肯定不知道!

我们网站上有一个特定页面,其中包含帐户余额信息,我们希望通过 SSL 确保其安全。但我们只希望这一特定页面是安全的。我在 localhost:80 虚拟主机中有以下内容,并且运行良好:

RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/account\.php(.*) [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [QSA,L]


但是,正如您可能猜到的那样,我们希望所有其他页面都只使用 HTTP。所以我将这个小片段插入到我的 localhost:443 虚拟主机中:

RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/account\.php(.*) [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [QSA,L]

...这就是问题发生的时候。返回 HTTP 没有问题,但是当我单击链接转到帐户页面时,它会更改为 HTTPS,但我立即收到错误 302 响应。当我删除这些重写规则中的任一个时,我没有收到此响应,只有当它们都存在时才会发生。

我尝试用 [R][R=301] 替换 [QSA],但无济于事。
(我知道 %{HTTPS} 开/关有点多余;))


所以我有两个问题:

  1. 是否有我忘记或做错的事情导致了这种情况?
  2. 使用 [QSA] 是否与 $1 多余?我们经常使用 GET 方法来指定页面和其他内容。


我们使用的是 PHP 5.2.9 和 Apache 2。

提前致谢!


布莱恩

最佳答案

虽然它在这里(并没有移动到 serverfault)..尝试

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/account\.php https://%{HTTP_HOST}/account.php [R=301,QSA,L]

HTTP/1.1 302 = 找到(并且不是错误代码),但暂时在另一个位置。

编辑实际上,当您将代码放在单独的 VirtualHost 中时,您也可以这样做

(In :80) 
RewriteRule ^/account\.php https://%{HTTP_HOST}/account.php [R=301,QSA,L]

(in :443)
RewriteCond %{REQUEST_URI} !/account\.php$
RewriteRule ^(.*) http://%{HTTP_HOST}$1 [R=301,QSA,L]

关于apache - 使用 Apache Rewrite 从 HTTP 转到 HTTPS,反之亦然,但我收到 302 响应并且我的应用程序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287107/

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