close
譯者:Nica < nicaliu at gmail dot com >

對所有提供網頁功能的網站來說,或早或晚幾乎不可避免的就是被導向一個不存在的 URL,可能是因為打錯位址、錯誤的鏈結,或是安裝了不正確的 script。通常,對跑 Apache 的伺服器來說,瀏覽網頁的訪客會接收到標準的 error page 。一般來說,這類型的資訊對訪客來說是沒有任何幫助的。此外,預設的 error page 並未提供任何的瀏覽導引選項。唯一的方式就是由訪客點選其瀏覽器上的倒退鍵回到上一頁。不過這只有在假設現今使用者都知道要按倒退鍵時才行得通,一個良善的使用者介面應該要有其它選項的。

設計網站時,必須記得很重要的一點就是:大部份的人都希望很快地在網站裡找到他們所需的東西。若網站的瀏覽系統不是很清楚,他們很可能一到網站之後又馬上離開。他們其實不關心伺服器是不是有問題,更別說是 404 還是 500。少數有些人可能會有點擔心,誤以為自已從這個網站收到病毒了,事實上他們可能只是打錯網頁的某個字,例如應是 links.html 卻打錯成 link.html。



基本 Apache 錯誤碼解說



Apache HTTP 有 57 種狀態回應碼。我們在此論及的這些,大部份都不會揭露錯誤的型態。在此將只說明五種,解說如下,並加上了鏈結展示該頁看起來的模樣 (如需深入細節,詳見 "Hypertext Transfer Protocol — HTTP/1.1" ):



400 — Bad Request

因為不對的語法,導致伺服器不瞭解這個 request。

401 — Unauthorized

訪客必須接受認可 (例如輸入密碼) 才能存取該頁。

403 — Forbidden

伺服器瞭解該 request 但無法執行它。這可能是錯誤的使用者名稱或密碼所引發,也或許是伺服器要有其它的輸入資訊。

404 — Not Found

伺服器無法找到相符的 URL。

500 — Internal Server Error

伺服器遭遇不在預期內的狀況,使其無法完成 request 提出的要求。



我們的責任是讓訪客來我們的網站時,盡可能達成他們的要求,要達到這個目的方法很多,以下的方式就可以依不同的 Apache 的 error code 去作。



簡介 .htaccess 檔



.htaccess 檔是網頁伺服器裡的組態檔,裡面含括的命令是用來告知伺服器,在某情況下應採取什麼樣的行為。.htaccess 檔最常見的用法,就是透過密碼保護的方式,限制存取伺服器裡的某些檔案或目錄。它也可以用來自動重導使用者、禁止伺服器存取某個 IP 位址,還有我們這裡所要舉的例子:呼叫客製化設計的 error page。Apache Web 伺服器及其它 NCSA 相容的 Web 伺服器皆可應用 .htaccess 這個檔。(若你在伺服器裡找不到這個檔,就自行建立,因為它並非伺服器執行時的必要檔案。除此之外,你可能還得改變 FTP 程式裡的選項,或你用來存取網站的方式,讓這個檔案能夠看得到。有許多檔案傳輸程式,對於開頭為 . 的檔案,預設會關掉被檢視的功能)

【Nica 註:在 Linux 下,開頭為 . 的檔案為隱藏檔,一般 ls 列出檔案目錄時是看不到的。必須 ls -a 才能檢視所有檔案與目錄,包括隱藏檔。】



Apache 軟體基金會 寫了 建立 .htaccess 檔的基本守則 。應可以讓你有個好的開始。不過,就我們的目的來說,若你還沒有這個檔案,只需要建立一個空白的檔案,命名為 .htaccess 即可。該檔案內容將於文後探討。若你已經有這個檔,只要加入我們在本文文之後列出來的那些程式碼就行了。若你還有任何有關建立與使用 .htaccess 檔的問題,都可以在我們的討論區 裡提出來。



簡易 Error Page 解決方案



針對錯誤狀況進行解說最簡單的方式就是使用客製化的 error page。一般來說,這是用在典型錯誤的情況下,這種作法必須對個別的訊息建立獨立的頁面。 .htaccess 檔 (置於根目錄下) 裡的清單看起來應該是像這樣:



ErrorDocument 400 /400page.php

ErrorDocument 401 /401page.php

ErrorDocument 403 /403page.php

ErrorDocument 404 /404page.php

ErrorDocument 500 /500page.php



這方法雖然可以輕鬆就達成目的,但你必須建立五個不同的檔案。雖然工程不算浩大,但若你可以只建立一個,就自動處理所有的錯誤訊息,會更好。



較好的 Error Page 解決方案



你只要看一下以下鏈結的圖片,瞭解 WebReference 裡所使用的一些客製化 error page,就會瞭解它們提供給訪客的,是更好的資訊與更多選項:



Custom 404 error page

Custom 500 error page



這是不是比本文一開始介紹的預設頁面要好得多了 ? 若仔細看,你會發現訪客試圖存取的 URL 會顯示出來,伴隨的是一些他們無法瀏覽的原因。它們亦提供了聯絡網站某人的選項。此外,所有正規的瀏覽方式都還是能用的,網頁格式一如網站的其它頁面,這麼作比較不會讓訪客那麼擔心。如果你想要,還可以額外放廣告進去這個頁面。不過,由於這時逛網頁的人應該不是很高興,所以讓頁面保持沒有廣告的狀態,一般來說會是比較好的。



來看看產生這類型的 error page 得作些什麼。如你所見,其實並不難,所需要的東西十分簡單:你的 Web 伺服器裡必須有 PHP,再者,你必須確認你是可以使用客製化 error page 的。大部份執行 Apache 網頁主機的作業系統皆可調整這兩個需求,所以這應該不會是問題。



基本 script



這個 script 是用 PHP 寫的,用 switch 述句 決定收到哪些 error 要顯示哪些訊息。這個 script 亦含括了傳送 email 通知至特定郵件位址的選項,內容含括了時間、收到的 error、要求的頁面,以及他們從哪個頁面而來的資訊。不過這個動作必須視收到的 error 數量而定,你或許不會想用到這個功能,因為這可能會引發大量的 email 傳送。此 script 乃由愛爾蘭都柏林的 Sabre Web Design 公司所建立。

完整 script 列於此頁 。



"安裝" 此 script



完整的 script 是直接置放在網頁裡的,也就是網頁內容一般置放的地方。以此方法去作,可以令 error page 與網站其它頁面擁有相同的設計型態。此舉顯然在許多時侯對一些訪客來說是極為重要的,當他們看到這樣的網頁可能就不會太擔心 - 這部份之前已提過。



唯一必須變更的就是 $email 變數了。你必須將這個 email 位址改成你要 error page 傳送過去的那個。若不想用這個功能,要不就是直接刪除,要不就是把 script 末端 E-mail section 這段註解起來。這個 script 有幾個地方會用到 $email 變數,為的是顯示 email 位址,讓訪客能夠與你連繫。若不要他們這麼作,只要移除 script 裡該 error code 的行列即可。另一個方法是,若想要顯示 email 位址,但又不想因此收到垃圾信,則可以使用圖示展現你的 email 位址。這種方式訪客可以看你的位址,但 spam 程式 (spambot) 不能。



你接下來還會需要在 .htaccess 檔加入以下行列。 (這和上面列的有點像,不同的地方在於它只有一個頁面需要參照)。若你上傳帶有 script 的頁面至根目錄,那麼就不需要再作這個變動,否則,請確認變更檔案的路徑,例如: ErrorDocument 400 /otherDir/errorpage.php。



ErrorDocument 400 /errorpage.php

ErrorDocument 401 /errorpage.php

ErrorDocument 403 /errorpage.php

ErrorDocument 404 /errorpage.php

ErrorDocument 500 /errorpage.php



接下來,只要上傳帶有 script 的頁面與 .htaccess 檔至根目錄。確認帶有 script 的該網頁檔案屬性設定為 644 (rw-r--r--)。



就這樣 ! 測看看,只要輸入網站裡不存在的 URL 就可以了。



客製化 script



該如何客製化顯示怎樣的 error page 是天馬行空無限制的。Francesco Mugnai 就提供了一連串客製化的 404 error page 在他的部落格上。有許多都相當有創意。



原文出處:

Creating Custom Error Pages on Apache Servers
arrow
arrow
    全站熱搜

    nicaliu 發表在 痞客邦 留言(0) 人氣()