有人可以告知以下为什么不起作用吗?
Redirect 301 /foo/bar/test/ https://www.example.com
它重定向到https://www.example.com/bar/test/
(注意/foo/
已被删除?)而不仅仅是https://www.example.com
。
答案 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 /”