Apache RedirectMatch问题与相对路径

时间:2013-10-10 06:38:15

标签: apache http-redirect mod-alias

最近,我将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。

对这个问题有任何想法吗?

1 个答案:

答案 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

希望它有所帮助。