从子目录重定向到根目录-已设置New WordPress 5.2.3

时间:2020-02-06 作者:YorkieMagento

我正在使用Wordpress 5.2.3 对于new websitenew server 设置

我已将现有域指向新服务器。

这个old website was installed on a sub-directory. 所以谷歌等已经建立了索引mywebsite.com/sub-directory 对于各个页面。

建立htaccess redirect 因此,任何访问mywebsite.com/sub-directory/ 转到mywebsite.com/?

澄清mywebsite.com/sub-directory/about-us 将重定向到mywebsite.com/about-us

谁能提供一个解决方案?

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

在你的根的顶端.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 (无尾部斜杠)。