2017-01-14 65 views
0

我的網站的所有頁面都可以通過2個網址訪問:一個是普通英文和一個是IDN。例如:覆蓋http狀態代碼從404到200

www.example.com/examplepage 
пример.рф/примерстраницы 

在服務器我只是有英語文件,所以我決定在PHP中創建2個陣列:

$realUrl=array('examplepage'); 
$fakeUrl=array('примерстраницы'); 

而且在404.php文件檢查:如果用戶從$ fakeUrl陣列請求的url - 我只包含一個來自$ realUrl的頁面,並將http狀態代碼更改爲200(無重定向,因此他在地址欄中看到了他的IDN請求)。這是一個好方法嗎?一切正常,但我不能改變這種頁面的響應代碼,我都試過:

header("HTTP/1.1 200 OK"); 
http_response_code(200); 

但響應代碼仍然是404

+0

代替使用404頁面,您應該將所有流量重定向到「正常」頁面,並在那裏分析/處理請求。 – jeroen

+0

@ jeroen但我想維護請求的網址。哦。另一種方法是從$ fakeUrl數組中創建所有文件,並使用包含在內的所有文件.. :( –

+0

)您應該維護請求的url。查看url重寫,這樣您可以將所有流量導向不存在的頁面導向到一個腳本並根據請求的URL處理請求 – jeroen

回答

0

你不能做到這一點,你需要重定向到真實的網址或要求您的網頁,如果他們在同一個 服務器。你也可以使用捲曲來確定該頁面是否存在但不是在404

+0

可以使用curl來檢查該頁是否可用 –

+0

您嘗試使用的代碼無法執行,因爲您要將用戶發送到404您需要重定向用戶訪問一個頁面並開始隱藏該頁面,但404不能這樣做 –

0

我發現了一個奇怪的特性使用htacess發送我自己的404頁面,也許有一個「搜索」在這個方向: if你用這個創建一個htacess:

ErrorDocument 404 /my_page.php 

瀏覽器將會收到帶有404頭的my_page.php的內容。看起來你不能改變響應代碼。

但是,如果你在寫htacess:

ErrorDocument 404 http://www.mys_site.com/my_page.php 

這樣一個絕對的URL,瀏覽器將收到my_page.php有200頭。我用它欺騙了「黑客機器人」,他們試圖訪問頁面並查看頁眉,看看他們是否找到了他們正在尋找的頁面。

也許在你的htaccess中使用它來檢測被調用的頁面可以幫助你。