如果我不包含绝对路径,如何防止 Apache mod_rewrite 重定向到 http?

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

我的 VirtualHost 配置中有几个用于 301 重定向的 RewriteRule。如果我不在替换路径中包含绝对路径,Apache 将重定向到 http 协议而不是 https,即使原始 url 是 https。在浏览器中检查网络时,这将导致额外的重定向。

因此,如果我包含完整路径,它将按预期工作并将重定向 https://www.example.com/en/mobile/somethinghttps://www.example.com/en/something

RewriteRule ^/?en/mobile/(.*)$ https://www.example.com/en/$1 [R=301,L]

但是如果我不包含完整路径,它将首先重定向到http(由AWS CloudFront处理):

RewriteRule ^/?en/mobile/(.*)$ /en/$1 [R=301,L]

如果我不在代码中包含绝对路径,是否可以保留协议?我最近更新了我的网站,并且更改了几个 url 路径。我只是想让代码保持干净,不要在每条规则中重复完整的 url。

apache mod-rewrite
1个回答
0
投票

这很可能是由于 AWS Cloudfront 背后可能使用普通的

http
与您的 Apache/应用程序服务器进行通信所致。

默认情况下,Apache 根据请求生成自引用 URL(方案 + 主机名 + 端口)。要覆盖此设置,您需要在 VirtualHost 配置中的

https 指令
 中设置方案(即 
ServerName
)。例如:

ServerName https://www.example.com

您可能还需要设置

UseCanonicalName On

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