![Apache2:两次重定向](https://linux22.com/image/731817/Apache2%EF%BC%9A%E4%B8%A4%E6%AC%A1%E9%87%8D%E5%AE%9A%E5%90%91.png)
我想将主机上的所有 URL 重定向到 https,并将根文件夹重定向到子文件夹。
我的配置:
Redirect permanent / https://myhost.com/
RedirectMatch ^/$ /sub-folder/
第一次重定向工作良好,所有 http 请求都重定向到 https,但第二次重定向没有任何作用。
请问有什么建议吗?
谢谢。
答案1
看起来问题出在你的第一条规则上:
Redirect permanent / https://myhost.com/
可以改为:
Redirect permanent http://myhost.com/ https://myhost.com/
此外,正则表达式似乎不起作用,除非它在引号内,因此^/$
应该更改为"^/$"
由于第一次重定向发生了无数次,因此第二次重定向未被观察到。
我可以通过在/etc/hosts
文件中添加以下几个条目来调试这个问题:
127.0.0.1 kerneldeimos.local
127.0.0.1 subdomain.kerneldeimos.local
然后我添加了您的重写规则(为了方便起见,使用子域而不是 HTTPS):
Redirect permanent / http://subdomain.kerneldeimos.local
RedirectMatch "^/$" /sub-folder/
在我将配置更改为以下内容后,它就可以正常工作了:
Redirect permanent http://kerneldeimos.local http://subdomain.kerneldeimos.local
RedirectMatch "^/$" /sub-folder/
答案2
经过一番研究,我解决了这个问题。问题是第一次重定向被重定向到端口 443,因此第二次重定向必须在 VirtualHost:443 中进行管理。正如您所说,RedirectMatch 指令中需要使用引号。
非常感谢。