2

最近,我将我的 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 下,LocationHTTP 响应标头是/otherurl/someaction- 一个相对路径 URL。

但在 Apache 2.2.24 上,Location标头是http://www.example.com/otherurl/someaction- 完整的绝对 URL。

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

4

1 回答 1

1

我认为您的问题是Redirect从 2.0 更改为 2.2(.6)。并根据文档:

旧的 URL 路径是以斜杠开头的区分大小写(% 解码)的路径。不允许使用相对路径。新 URL 应该是一个以方案和主机名开头的绝对 URL。在 Apache HTTP Server 2.2.6 及更高版本中,还可以使用以斜杠开头的 URL 路径,在这种情况下,将添加当前服务器的方案和主机名。

如果您只是错过了https重定向,我建议您将规则更改为:

RedirectMatch ^/abc/abcd https://www.example.com/otherurl/someaction

希望能帮助到你。

于 2013-10-10T09:25:06.233 回答