您在這裡

Drupal修改“頁面未找到”判斷跳轉到其它網站

James Qi 在 2015年5月13日 - 18:17 發表

  兩年前寫過一篇博文《Drupal中對404錯誤進行判斷、重定向》,當時是在一個系列網站中采用自定義模塊,在Module文件中構建了一個404錯誤的頁面,在頁面中對錯誤進行判斷并302重定向到合适的内部頁面。在博文下方及留言中也寫了使用.htaccess進行錯誤處理的辦法和例子。

  除了站内的這種報錯、跳轉以外,也有站間的報錯需要處理,例如http://chahaoba.com/ 這個站的最新日志信息中類似 http://chahaoba.com/1330719 這樣的報錯很多,其實正确的網址應該是http://www.chahaoba.com/1330719 ,也不知道什麼原因網友會訪問錯誤的網址。

  我以前做過一個自定義的“頁面未找到”頁面,裡面告訴網友這個網址沒有找到,可以嘗試帶www的另外一個網址,但這樣對網友來說比較不方便,比較是遇到一個報錯頁面,還需要額外進行點擊。

   今天把這個頁面中的php代碼進行了修改,直接判斷帶www的頁面是否存在,如果存在就用301重定向跳轉,如果不存在則按照常規說明“頁面未找到”。

  代碼如下:

<?php
$request_uri = $_SERVER['REQUEST_URI'];
$url = 'http://www.chahaoba.com'.$request_uri;
$header = get_headers($url, 1);
if (isset($header[0])) {
  if ($header[0] == 'HTTP/1.1 200 OK' || $header[0] == 'HTTP/1.0 200 OK') {
    Header("HTTP/1.1 301 Moved Permanently");
    Header("Location: $url");
  } elseif (isset($header[1])) {
    if ($header[1] == 'HTTP/1.1 200 OK' || $header[1] == 'HTTP/1.1 200 OK') {
      Header("HTTP/1.1 301 Moved Permanently");
      Header("Location: $url");
    }
  }
}
$output = '';
$output = '對不起,';
$output .= '無法找到請求的頁面 "'.$request_uri.'" 。';
print $output;
?>

  這樣應該可以起到很好的訪問引導作用,用戶甚至不會察覺到訪問網址的變化,全部是自動進行的。yes

自由标簽:

發表新回應

Plain text

  • 不允許使用 HTML 標籤。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。