301 重定向不工作 - 附加路径

301 Redirect Not Working - Appending Path

有人可以告诉我为什么以下方法不起作用吗?

Redirect 301 /foo/bar/test/ https://www.example.com

它重定向到 https://www.example.com/bar/test/(注意 /foo/ 已被删除?)而不是简单地 https://www.example.com.

尝试只 "foo/bar/test/" 而不是“/foo/bar/test/”

Redirect 301 /foo/bar/test/ https://www.example.com

我认为您看到的是缓存响应,因为上述指令不可能产生规定的结果。

但是,由于您只想重定向到根域,因此 Redirect 不是正确的指令。 Redirect是前缀匹配,将匹配后的路径段复制到目标URL.

因此,例如,鉴于上述指令和 /foo/bar/test/baz 的请求,您将被重定向到 https://www.example.combaz/ - 请注意 URL 上的附加 baz/ (以及域名后缺少的斜杠 - 这是另一个问题,由 URL-路径 /foo/bar/test/ 上的尾部斜杠引起。如果您需要尾部斜杠,则需要添加尾部斜杠也到达目标)。

尝试 RedirectMatch insead:

RedirectMatch 302 ^/foo/bar/test/$ https://www.example.com

当您对它工作正常感到满意时,将 302 更改为 301。 (301 重定向由浏览器缓存,因此会使测试变得麻烦。)

RedirectMatch 使用正则表达式而不是简单的前缀匹配。参考:http://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch