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