兩年前寫過一篇博文《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; ?>
這樣應該可以起到很好的訪問引導作用,用戶甚至不會察覺到訪問網址的變化,全部是自動進行的。👍
评论