最近,我将Apache服务器从2.0升级到2.2.24,但我遇到RedirectMatch
的问题。
我的旧RedirectMatch
指令:
RedirectMatch ^/abc/abcd /otherurl/someaction
在Apache 2.0中,如果我们使用HTTPS来访问,例如。 https://www.example.com/abc/abcd
,它会重定向到https://www.example.com/otherurl/someaction
。
但是在apache 2.2.24中,它返回http://www.example.com/otherurl/someaction
(HTTP,而不是HTTPS) - 似乎Apache已经改变了请求模式。
如果我通过http watch检查HTTP响应,我发现2.0和2.2.24之间存在差异。
在Apache 2.0下,Location
HTTP响应标头为/otherurl/someaction
- 相对路径网址。
但是在Apache 2.2.24上,Location
标题是http://www.example.com/otherurl/someaction
- 完整的绝对URL。
对这个问题有任何想法吗?
答案 0 :(得分:1)
我认为你的问题是Redirect
从2.0变为2.2(.6)。并根据文件:
旧的URL路径是以斜杠开头的区分大小写(%-decoded)路径。一个亲戚 路径是不允许的。新URL应该是以方案开头的绝对URL 主机名。在Apache HTTP Server 2.2.6和更高版本中,可以使用以斜杠开头的URL路径 也可以使用,在这种情况下,将添加当前服务器的方案和主机名。
我建议将规则更改为,如果您只是错过https
重定向:
RedirectMatch ^/abc/abcd https://www.example.com/otherurl/someaction
希望它有所帮助。