我想通过 .htaccess 设置重定向,如下所示:
https://example.net/xyz/* 中的所有页面都应重定向到 https://example.net/abc/:
- https://example.net/xyz/foo --> https://example.net/abc/
- https://example.net/xyz/bar --> https://example.net/abc/
- https://example.net/xyz/baz --> https://example.net/abc/
- https://example.net/xyz/foo/bar/baz --> https://example.net/abc/
会是这样吗?
RedirectMatch 301 ^/xyz/ https://example.net/abc/
或者
Redirect 301 ^/xyz/.* https://example.net/abc/
有什么区别?
回答1
这两个都不对。
重定向匹配应该有一个捕获组,如:
RedirectMatch 301 ^/xyz/(.*) https://example.net/abc/$1
重定向指令根本不使用正则表达式。它的匹配总是“开始于”。这应该做你想要的:
Redirect 301 /xyz https://example.net/abc
在这种情况下,我更喜欢使用 Redirect
而不是 RedirectMatch
,因为实际上并不需要正则表达式功能。
至于它是否有效,您可以尝试在 https://htaccess.madewithlove.com/ 之类的模拟器中测试规则,或者您可以启动一个临时服务器。提前测试是个好主意,尤其是在 .htaccess 文件中有其他规则的情况下。 Redirect
指令通常与 RewriteRule
指令冲突,如果同时使用这两种指令,则会导致意外行为。