我有 2 个目录,我想在不丢失搜索排名的情况下重命名它们。这是 url 约定和建议的名称更改:
旧:mysitename.com/folder1/folder2/filenames
到
新:mysitename.com/newfoldername1/newfoldername2/filenames
文件名是每个页面的给定名称
RewriteRule ^(.*)/folder1/folder2/(.*)$ $1/newfoldername1/newfoldername2/$2 [R,L]
这个规则的问题是 RewriteRules 只匹配路径,而不是域。您(.*)/
在规则的前面有 ,就好像您正在尝试匹配域一样,这不是必需的。您还将其设置为重定向而不是重写...也许这就是您想要的,在这种情况下,请保留“R”标志,但我会在下面的代码中将其删除,以防您只是想重写。修改规则如下,它应该工作:
RewriteRule ^newfoldername1/newfoldername2/(.*)$ /folder1/folder2/$1
编辑:既然您已经发布了其他规则,我删除了[L]
并将顺序颠倒到我认为您正在尝试做的事情。
编辑 2:上述规则假设您希望用户输入domain.com/newfoldername1/newfoldername2/whatever
被静默重写为domain.com/folder1/folder2/whatever
. 您最新评论的措辞表明您希望将输入的用户domain.com/folder1/folder2/whatever
重定向(换句话说,在他们的浏览器中更改地址),domain.com/newfoldername1/newfoldername2/whatever
并且服务器已准备好处理此新路径。在这种情况下,需要以下规则:
RewriteRule ^folder1/folder2(/.*)?$ /newfoldername1/newfoldername2$1
[R=301,L]