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