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

时间:2015-02-13 15:43:24

标签: .htaccess redirect

我需要通过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 /

结尾

我尝试过以下但没有任何效果

方法1:

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

方法2:

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

方法3:

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

你能告诉我。

谢谢!

1 个答案:

答案 0 :(得分:1)

请尝试将其放入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/$1 [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]