我需要通过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
你能告诉我。
谢谢!
答案 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]