我知道这听起来像是很多其他问题,但我似乎找不到答案。

假设您正在:
www.domain.com/folderA/folder2/folder3/

我希望将其重定向到:
www.domain.com/folderB/folder2/folder3/

因此整个结构保持不变..它只是重定向。
到目前为止,我有:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/folderA [NC]
RewriteRule ^(.*)$ /folderB/$1 [R=301,L]


但是当我用它的时候
www.domain.com/folderB/folderA/folder2/folder3/

我究竟做错了什么?我如何摆脱那个文件夹A?

最佳答案

模式^(.*)$还包括前缀folderA。您必须在模式中明确指定folderA,并且仅捕获RewriteRule中的后一部分。然后您可以删除RewriteCond

RewriteEngine on
RewriteRule ^/?folderA/(.*)$ /folderB/$1 [R,L]


切勿在启用301的情况下进行测试,有关详细信息,请参见此答案Tips for debugging .htaccess rewrite rules

07-24 21:47