2015-01-09 34 views
1

美好的一天。通过htaccess重定向404错误发送用户上一级

我最近采取了一个新的网站来管理,看着谷歌上的网站管理员工具,我注意到一个很大的数字(9000左右)的404错误,深深地看,我匹配一个奇怪的模式: 在一些文章中,我已经注意到,一些图像点与建立这样一个链接页面:

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

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

是否可以更改htaccess,使用户进入404页面,只需“上一层”并重定向到页面的父页面?

因此,如果最后没有显示任何页面,用户会被重定向到主页。

在此先感谢。

回答

1

如果当前URI导致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] 
1

尝试:

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

如果你有其他重写规则,可能需要有这样的规则他们面前。

+0

这是我的例子中的确切情况,但我想编写一个更通用的规则,我得到使用parentesys的POI和$ 1,我怎样才能从剥离的最后/.../网址?可能吗? –

+0

@ MatteoBononi'peorthyr'尝试用'(。+ /)' –

+0

代替'([^ /] +/[^ /] +/[^ /] +/[^ /] + /谢谢,它不会像我预期的那样工作,但是现在我已经有了一个基础来开始感谢! –