Drupal站的Views带参数可以形成页面,前些年我们一直在使用,但更多是使用创建内容类型添加node方式生成新页面,最近建的站点更多采取Drupal站内不创建内容类型而是直接建表,在用Views带参数形成页面,这样的好处是结构简单、数据库效率高。
但默认情况下,当带的参数查询不到内容时,是显示一个标题出来,没有实际内容,给出的状态码是200,这也容易导致形成了无意义页面,可能导致搜索引擎的降权。
原来就发现这个问题但没有引起重视,最近把工商名录的上千万条数据从node改为table,对于有人要求删除的内容,还显示一个标题出来、给出200状态码就不合适了,今天去找了一些办法,算是可以解决了。
一个比较简单的办法是在“无任何结果时的行为”添加“全局:文本域”,截图如下:
选用PHP输入<?php drupal_not_found(); ?>就可以,截图如下:
实测这样可以达到希望的效果。
另外,还有几种办法:
- 在参数验证的地方使用PHP代码,按照需要进行判断,返回TRUE或者FALSE;
- 也可以使用“<?php header('HTTP/1.1 404 Not Found'); exit('404 not found'); ?>”这样的PHP代码,返回一个更纯的404页面;
- 还可以尝试“Views 404”这个模块,我暂时没有尝试,看介绍是可以用的。
2018年11月29日补充:2013年写的另外一篇博客《Drupal的Views中添加Page参数来使不存在的页面显示404 Not Found》。
评论