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

Redirect 404 errors via htaccess sending the user up one level

大家好。

我最近管理了一个新站点,查看 google 上的网站管理员工具,我注意到大量(大约 9000 个)404 错误并深入查看,我匹配了一个奇怪的模式: 在一些文章中,我注意到一些图像指向一个带有 link 的页面,如下所示:

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

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

是否可以更改 htaccess,以便进入 404 页面的用户只需 "go up one level" 并被重定向到该页面的父页面?

因此,如果在 none 个页面的末尾显示,用户将被重定向到主页。

提前致谢。

尝试:

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

如果您有其他重写规则,可能需要将此规则放在它们之前。

如果当前 URL 导致 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}/[=10=] !-f
RewriteCond %{DOCUMENT_ROOT}/[=10=] !-d
RewriteRule ^(?:(.+?)/)?[^/]+/?$ / [L,NE,R=302]