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》。
评论