301重定向不起作用 - 追加路径

时间:2015-08-07 11:34:14

标签: apache .htaccess redirect http-status-code-301

有人可以告知以下为什么不起作用吗?

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

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

2 个答案:

答案 0 :(得分:1)

  

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

我认为您所看到的是缓存响应,因为上述指令无法产生所述结果。

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

因此,例如,根据上述指令和/foo/bar/test/baz请求,您将被重定向到https://www.example.combaz/ - 请注意网址上的其他baz/(以及之后丢失的斜杠)域名 - 这是另一个问题,由URL路径/foo/bar/test/上的尾部斜杠引起。如果您需要尾部斜杠,那么您还需要将尾部斜杠添加到目标。)

尝试RedirectMatch insead:

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

如果您对302工作正常,请将302更改为301。 (301重定向由浏览器缓存,因此可能会使测试变得麻烦。)

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

答案 1 :(得分:0)

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