Drupal中的Views是一个非常有用的工具,不需要编程就可以生成各种列表,我们一直在各个网站中使用。但也存在一个问题,举例如下:
- http://ita.bizdirlib.com/business_directory 可以正常显示列表
- http://ita.bizdirlib.com/business_directory/ASCA 可以正常显示某个内容类型中存在的页面
- http://ita.bizdirlib.com/business_directory/asdf1234 这样不存在的页面显示总的列表而不是我们希望的404 page not found结果
最后一种情况不是我们希望的,特别是当以前存在的某个页面根据需要删除后,不是显示404 page not found,而是显示整体列表的话,浏览者的体验并不好,并且搜索引擎也不会认为该页面已经删除,我们以前还需要在robots.txt中专门添加这个页面的网址来屏蔽爬取,然后再提交搜索引擎删除缓存快照和页面收录。
发现这个问题存在有1、2年了,中间尝试过几次都没有解决,这几天又找了些资料,再自己反复测试,终于是找到正确的解决办法了:
- 进入相关视图Views中的页面Page设置,在参数Arguments中添加一个Global: Null;
- 勾选Fail basic validation if any argument is given,也就是如果有任何参数就验证失败,然后显示404;
- 更新参数设置,保存Views。
截图如下:
以上是Drupal 6中的设置,Drupal 7中类似,只是argument 改为 contextual filter,然后是添加一个Global: Null,并勾选More中的Fail basic validation if any argument is given即可。
2013年3月3日补充:
进行了上面的修改后,发现Views的Page中有大量错误网址,例如:
- http://inquiry.mingluji.com/inquiry_6/%E7%94%AF?page=88
- http://chinaexporter.mingluji.com/2007second/NICE_GROUP_CO.,LTD?page=2
以前都忽略了,因为这些错误的网址以前都可以正常访问的,现在成了404。这种错误网址确实应该从搜索引擎中删除,但现在集中出现有些不好,google webmaster tools就来信提醒这种情况。
本来应该是下面这样的网址才对:
- http://inquiry.mingluji.com/inquiry_6?page=88
- http://chinaexporter.mingluji.com/2007second?page=2
这种错误网址出的原因也还不清楚。暂时就任由搜索引擎去删除老的、收录新的,没有做更多处理。只是在依然存在问题的网站做了清除drupal缓存、boost缓存和squid缓存的工作。
2013年4月1日补充:
Google Webmaster Tools中的报错依然延续不断,想到一个办法,既然错误的网址是有规律可循的,就可以采用Apache ReWrite的办法来进行重定向,把错误的网址纠正为正确的网址,这显然更合适一些,于是进行了一些测试,在.htaccess中添加下面的代码:
# views error url correct RewriteCond %{REQUEST_URI} ^\/inquiry_6\/.+$ RewriteCond %{QUERY_STRING} ^page=\d+$ RewriteRule ^(.*)\/.+$ $1 [L,R=301] RewriteCond %{REQUEST_URI} ^\/m\/inquiry_6\/.+$ RewriteCond %{QUERY_STRING} ^page=\d+$ RewriteRule ^(.*)\/.+$ /m/$1 [L,R=301]
这样就通过301重定向将business_directory与?page=123之间多余的/company_name去掉,例如http://inquiry.mingluji.com/inquiry_6/%E7%94%AF?page=88 自动改为 http://inquiry.mingluji.com/inquiry_6/?page=88 。
2013年4月份把各国.bizdirlib.com的drupal 6网站views改了,各省.youbianku.com的drupal 6网站views改了,6月把各国.youbianku.com的drupal 6网站views改了。
2018年补充:另外一篇博客《让Drupal的Views中变量找不到内容的页面显示404错误》。
评论