我最近将网站配置为通过 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/"
希望这对某人有帮助。