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

Apache 404页面重定向到上一个目录,apache,.htaccess,mod-rewrite,redirect,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.ht

当用户遇到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


有什么想法吗?谢谢。

尝试将其添加到文档根目录中的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

如果需要,则最后一步将转到根,然后将最后一行更改为:

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

嗨,林琼恩,谢谢你的帮助,但我认为它没有达到预期效果。它不会更改目录并持续抛出404错误。当最后一个字符为“\”时,问题就会出现。如何修复?