当前位置

让Drupal的Views中变量找不到内容的页面显示404错误

James Qi 在 2018年9月10日 - 17:42 提交

  Drupal站的Views带参数可以形成页面,前些年我们一直在使用,但更多是使用创建内容类型添加node方式生成新页面,最近建的站点更多采取Drupal站内不创建内容类型而是直接建表,在用Views带参数形成页面,这样的好处是结构简单、数据库效率高。

  但默认情况下,当带的参数查询不到内容时,是显示一个标题出来,没有实际内容,给出的状态码是200,这也容易导致形成了无意义页面,可能导致搜索引擎的降权。

  原来就发现这个问题但没有引起重视,最近把工商名录的上千万条数据从node改为table,对于有人要求删除的内容,还显示一个标题出来、给出200状态码就不合适了,今天去找了一些办法,算是可以解决了。

  一个比较简单的办法是在“无任何结果时的行为”添加“全局:文本域”,截图如下:

  选用PHP输入<?php drupal_not_found(); ?>就可以,截图如下:

  实测这样可以达到希望的效果。

  另外,还有几种办法:

  1. 在参数验证的地方使用PHP代码,按照需要进行判断,返回TRUE或者FALSE;
  2. 也可以使用“<?php header('HTTP/1.1 404 Not Found'); exit('404 not found'); ?>”这样的PHP代码,返回一个更纯的404页面;
  3. 还可以尝试“Views 404”这个模块,我暂时没有尝试,看介绍是可以用的。

  2018年11月29日补充:2013年写的另外一篇博客《Drupal的Views中添加Page参数来使不存在的页面显示404 Not Found》。

添加新评论

Plain text

  • 不允许使用HTML标签。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。