htaccess:将子文件夹重定向到另一个子文件夹

htaccess: Redirect sub-folder to another sub-folder

我需要通过 htaccess 文件进行 301 重定向,但是我很难重定向下两层的子文件夹。如果它很重要,index.php 解析为 /

场景: www.domain.com/oldfolder1/oldfolder2/ 应重定向到 www.domain.com/newfolder/

此外,存在以下规则,因为它是必需的

Redirect 301 /oldfolder1/ http://www.domain.com/newfolder/

我遇到的问题是目前重定向结束于 www.domain.com/newfolder/oldfolder2/ 这是错误的,不应如此。该页面必须在 www.domain.com/newfolder/

结束

我已经尝试了以下但没有任何效果

方法一:

RedirectMatch 301 /oldfolder1/oldfolder2/(.*) /newfolder/

方法二:

Redirect 301 /oldfolder1/oldfolder2 http://www.domain.com/newfolder/

方法三:

Redirect 301 /oldfolder1/oldfolder2 http://www.domain.com/newfolder/index.php

能否请教一下。

谢谢!

试试这个并将其放入您的 htaccess 文件中。看看它是如何工作的。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/oldfolder1/oldfolder2/?$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/oldfolder1/?$
RewriteRule ^(.*) http://www.domain.com/newfolder/ [R=301,L]

编辑:

根据您的评论。

RewriteEngine On 
#if directory exists redirect to equivalent folder. 
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^oldfolder1/?(.*)$ http://www.domain.com/newfolder/ [R=301,L]
#if it's not a directory then redirect to main folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^oldfolder1/?(.*)$ http://www.domain.com/newfolder/ [R=301,L]