2013-12-20 35 views
1

我正在嘗試在php中創建一個客戶404頁面,該頁面可捕獲並可登錄數據庫所請求的頁面。我有這個在我的.htaccess文件已經:在自定義404頁面上捕獲和記錄斷開的鏈接

的ErrorDocument 404 http://mywebsite.com/notfound.php

我所要做的是請求的URI追加到作爲查詢字符串的URL。我曾經嘗試這樣做:

的ErrorDocument 404 http://mywebsite.com/notfound.php?url=% {REQUEST_URI}

但URL顯示,我把上面的文字文本。所以我想我會在[QSA]之類的末尾需要某種標誌,但所有嘗試都會導致服務器錯誤500.

我的最終目標是捕獲嘗試的斷開鏈接和引用URL(其中I可以從notfound.php頁面上的$ _SERVER ['HTTP_REFERER'])獲得,並將其記錄到我的數據庫中,在該數據庫中,我可以拉取所有鏈接的報告,超鏈接或通過AJAX調用,這些鏈接已損壞或丟失。我能夠做所有事情,除非得到導致404錯誤的實際鏈接的請求URI。

回答

1

你不應該使用ErrorDocument 404http://目標,以避免全重定向,像這樣:

ErrorDocument 404 /devsite/notfound.php 

然後原來的404 URI將提供給你作爲$_SERVER["REQUEST_URI"]

+0

不知道我是否跟隨。 ..如果我把.htaccess文件中的「ErrorDocument 404 /notfound.php」,我得到了一個404請求。在.htaccess中使用「ErrorDocument 404 http://mywebsite.com/notfound.php」,但$ _SERVER [「REQUEST_URI」] = /mywebsite/notfound.php。我目前正在本地主機上開發,並不確定這是否有所作爲。我的實際ErrorDocument語句是:ErrorDocument 404 http://localhost/devsite/notfound.php它將在服務器上線時更改爲服務器。 – user3123746

+0

您需要從DocumentRoot提供完整路徑。所以你需要使用:**'ErrorDocument 404 /devsite/notfound.php'** – anubhava

+0

aahhh,我知道這是我忽略的東西。應該更好地知道(facepalm)。謝謝!! – user3123746