404页面重定向到上一个目录

时间:2013-04-26 00:00:04

标签: apache .htaccess mod-rewrite redirect

当用户遇到404错误时,我需要重定向到上一个目录。 例如,如果找不到页面www.examplesite.com/aaa/bbb/ccc/page.html,我将用户重定向到www.examplesite.com/aaa/bbb/ccc/,如果找不到www.examplesite.com/aaa/bbb/ccc/,则会重定向到www.examplesite.com/aaa/bbb/,依此类推。唯一的问题是(在此示例中)用户应该从www.examplesite.com/aaa/bbb/ccc/page.html转到www.examplesite.com/aaa/bbb/而不加载www.examplesite.com/aaa/bbb/ccc

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

尝试将此添加到文档根目录中的htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/[^/]+$ /$1/ [L,R=301]

说,您请求www.examplesite.com/aaa/bbb/ccc/page.html,而page.html不存在,您将被重定向到:www.examplesite.com/aaa/bbb/ccc/,如果 目录不存在,您将被重定向到:www.examplesite.com/aaa/bbb/并且如果 目录不存在,您将被重定向到:www.examplesite.com/aaa/,如果目录不存在,那么你最终会获得404。

如果你想要它,那么最后一步将你转到root,然后将最后一行改为:

RewriteRule ^(.*?)/?[^/]+$ /$1/ [L,R=301]