在你的根的顶端.htaccess
文件(WordPress前端控制器之前)添加以下内容:
# Redirect from /subdirectory/<anything> to `/<anything>`
RewriteRule ^subdirectory/(.*) /$1 [R=302,L]
只有在确认302(临时)正常工作后,才能将其更改为301(永久),以避免缓存问题。
UPDATE: 如果我想再重写一次/subdirectory/old-page
到/new-page
请问规则会如何改变?
您可以在上述“通用”重定向之前添加另一条规则。为了避免冲突,最具体的重定向应该放在第一位——匹配的第一条规则在此场景中获胜。
例如:
# Redirect from /subdirectory/old-page to `/new-page`
RewriteRule ^subdirectory/old-page$ /new-page [R=302,L]
# Redirect from /subdirectory/<anything> to `/<anything>`
RewriteRule ^subdirectory/(.*) /$1 [R=302,L]
请注意,上述重定向
/subdirectory/old-page
准确地说(即没有尾随斜杠)-如您的示例所示。如果应该有一个尾部斜杠,那么在字符串锚定的末尾之前添加一个斜杠(
$
), 换句话说:
^subdirectory/old-page/$
.
或者,要使尾部斜杠成为可选的,以便它接受带或不带尾部斜杠的请求URL,请使用?
数量词例如:。^subdirectory/old-page/?$
. 现在,它将与两者匹配/subdirectory/old-page
和/subdirectory/old-page/
并重定向到/subdirectory/new-page
(无尾部斜杠)。