2013-01-03 82 views
1

我懷疑這是無法完成的,但無論如何這裏都是這樣。有沒有辦法,在靜態網站上顯示當您使用Apache指令ErrorDocument將404找不到文件錯誤重定向到自定義頁面時用戶嘗試訪問的URL?舉例來說,如果你嘗試:Apache ErrorDocument:顯示404 URL

http://www.fredriley.org.uk/dingbat/arsebiscuits 

默認的404錯誤說:

The requested URL /dingbat/arsebiscuits was not found on this server. 

所以URL必須在一個環境變量。我可以在一個自定義的錯誤文檔中得到這個嗎?我想告訴用戶URL,而不僅僅是給他們一個通用的錯誤文檔。我知道我可以在PHP中輕鬆完成此操作,但該網站僅包含靜態HTML文檔。

+0

擁有一個靜態網站並不妨礙您有一個動態的錯誤頁面。您的託管服務是否提供某種服務器端技術? –

+1

謝謝,阿爾瓦羅。 PHP在託管服務(Titan)上很好,所以我想我可以爲404編寫一個PHP腳本。可能REQUEST_URI(http://php.net/manual/en/reserved.variables.server.php)是除非你能提出更好的方法,否則要使用最好的環境變量? 雖然該網站(http://www.fredriley.org.uk/callhull)主要由靜態文檔組成,但我在表單上使用了幾個PHP腳本,因此編寫另一個表單時不會太大。不過,我很好奇,如果有一種方法可以訪問靜態HTML文檔中的env變量。 –

+0

靜態意味着:靜態;-)我已經爲剩下的寫了一個正確的答案。 –

回答

1

擁有一個靜態站點並不能阻止您出現動態錯誤頁面。您可以使用您的託管服務提供的任何服務器端技術。

如果你可以使用PHP,你可以簡單地選擇一個靜態模板,它的擴展名更改爲*.php並加少許動態片段:

<p><?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?></p> 

如果你可以使用SSI,這是非常相似:

<p><!--#echo var="REQUEST_URI" --></span></p> 

REQUEST_URI變量包含由用戶鍵入的URL的本地部分(散列除外)。這是一個不錯的選擇。

+0

謝謝。我完全忘記了SSI,現在這種情況相對比較少見,而且很多主機都不支持。 –