2009-01-28 70 views
0

我的意思是第一個返回的報頭中的 HTTP/1.1 XXX YYYYYYY我如何動態修改

頭 我可以修改其他所有與mod_headers中 但希望能夠返回一個狀態200 403錯誤頁面到一個特定的用戶代理,不會顯示我的403頁的文本{它顯示一個備用頁面}

只是詢問是否有人知道env-var或標題名稱我可以在apache.conf中進行更改這個頭以任何方式{一旦我有,我可以制定使其用戶代理特定位

+0

這是專門處理一個用戶代理{not IE} {移動代碼轉換器},它不會將403文本傳遞給人類用戶{並且403頁面提供瞭如何取消禁止的詳細信息} – 2009-01-29 00:35:28

回答

0

你可以建立一個PHP腳本爲你的403錯誤頁面,並用該腳本修改標題:

把這樣的線在你的.htaccess或者Apache的配置文件:

ErrorDocument 403 /path/to/your/error/script.php

而且上述下面的php文件:

<?php 
if($_SERVER['HTTP_USER_AGENT'] == 'FooBot 1.2') { 
    header("HTTP/1.0 200 OK"); 
} 
?> 

還是做同樣的事情在您的首選語言。

+0

它看起來像唯一的選擇,但寧願默認服務的HTML而不是PHP作爲處理PHP {來自測試}的開銷是相當大的403請求轉到99以前被禁止和惡意機器人 – 2009-01-29 00:16:12

+0

目前在www上演示您的解決方案。 alandoherty.net 和是它允許自定義403頁要對谷歌的無線轉碼器渲染 www.google.com/gwt/m 但等着看是否有人知道的方式通過的http.conf做到這一點mod_headers或其他如果不是,我會標記你的答案爲最好 – 2009-01-29 04:03:15

1

這不是一個標題,它是狀態行。

說謊反應的狀態往往會導致問題,例如,鏈接檢查器將錯過報告這樣的錯誤。你正在依靠一個閱讀200頁的人來理解它,但是計算機協議的重點在於它們也可以被計算機理解。你應該嘗試解決問題而不是隱藏它。

這聽起來像你碰到了Internet Explorer對「友好」錯誤頁面的堅持。您可以通過填充錯誤頁面來解決該問題,使其大於512字節,這會導致Internet Explorer顯示錯誤頁面而不是自己的錯誤頁面。