通过htaccess重定向404错误,将用户向上发送一级

时间:2015-01-09 15:17:30

标签: php regex apache .htaccess redirect

美好的一天。

我最近选择了一个新网站进行管理,在google上查看网站管理员工具,我发现了大量(大约9000个)404错误,看起来很深,我已经匹配奇怪的模式: 在一些文章中,我注意到一些图像指向一个页面,其链接构建如下:

www.server.com/year/month/category/subcategory/somecharacter/

实际上需要404页面,但是,如果我删除最后一个目录/somecharacter/,一切正常。

是否可以更改htaccess,以便进入404页面的用户,只需"上升到一个级别"并被重定向到页面的父级?

所以,如果最后没有显示任何页面,用户将被重定向到主页。

提前感谢。

2 个答案:

答案 0 :(得分:1)

尝试:

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

如果你有其他重写规则,可能需要让这条规则出现在他们面前。

答案 1 :(得分:1)

如果当前网址导致404,您可以使用此通用和递归规则继续升级。当找到当前URI时,它将停止。

RewriteEngine On

## if current file/directory doesn't exist then
## forward to the parent directory of the current REQUEST_URI
RewriteCond %{DOCUMENT_ROOT}/$0 !-f
RewriteCond %{DOCUMENT_ROOT}/$0 !-d
RewriteRule ^(?:(.+?)/)?[^/]+/?$ /$1 [L,NE,R=302]