VirtualHost 中的 SSL 重定向导致 URL 中断

VirtualHost 中的 SSL 重定向导致 URL 中断

我最近将网站配置为通过 https 引导所有流量。我通过修改 vhost 文件来显示这一点

<VirtualHost *:80>
    DocumentRoot "/srv/http/example"
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost> 

当我转到站点根目录(即 example.com)时,此方法运行正常,但是当我尝试转到子目录时,URL 出现奇怪的中断。例如,如果我输入 example.com/blog,它会尝试重定向到https://example.comblog。 这里发生了什么?

答案1

我设法通过改变来解决这个问题:

https://example.com/

https://example.com\/

这似乎已经解决了问题,我认为 Apache 在某个时候去掉了斜线。

答案2

要将 TLS/SSL 站点重定向到非 TLS 站点,请参阅以下详细信息:

添加尾部斜杠,然后用反斜杠将其转义可恢复丢失的斜杠。

我发现我的特定网站需要在两个虚拟主机(*:80 和 *:443)中进行重定向,但 TLS 无法正常工作。将以下内容添加到两个虚拟主机可解决此问题。

Redirect permanent "/" http://example.com\/  

注意:Apache 文档显示,所有内容都要加上引号。就我而言,上述方法运行良好,允许按预期解析 URL 中的页面。来源:https://httpd.apache.org/docs/2.4/en/rewrite/avoid.html

从来源推断的例子:

Redirect "/one/" "http://one.example.com/"
Redirect permanent "/" "http://example.com/"

希望这对某人有帮助。

相关内容