我有一個個性化頁面404 htaccess的自定義404錯誤頁面 - 爲PHP頁面只
ErrorDocument 404 /404.php
它工作正常,但它需要的一切.JPG,.js文件,的CSS等...
我希望它只是採取.php併爲所有其他人做一個正常的404錯誤。
我沒有在任何地方找到該選項。
非常感謝。
我有一個個性化頁面404 htaccess的自定義404錯誤頁面 - 爲PHP頁面只
ErrorDocument 404 /404.php
它工作正常,但它需要的一切.JPG,.js文件,的CSS等...
我希望它只是採取.php併爲所有其他人做一個正常的404錯誤。
我沒有在任何地方找到該選項。
非常感謝。
不知道,但試試這個:
<Files ~ "\.php$">
ErrorDocument 404 /404.php
</Files>
報價從Files Directive文檔:
的<文件>指令由filename限制了封閉 指令的範圍。
+1它完美的工作,這就是OP要求的 – ShadowScripter 2012-03-09 12:21:50
工作正常!非常感謝您的幫助:-) – user1040899 2012-03-13 02:53:07
有幾種可能的途徑來這一點,但我會做下列之一:
您可以使用mod_rewrite
,通過@LazyOne的建議,只有文件重定向與.php
擴展您的自定義文檔:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]
或者您也可以通過PHP錯誤處理指導一切,你已經做了,使用PHP來確定所請求的資源是否是一個PHP腳本與否:
<?php
if (strtolower(substr($_SERVER['SCRIPT_URL'], -4)) != '.php') {
// If the requested resource does not have a .php extension, include the standard error doc and exit
include '404.html';
exit;
}
// Handle .php 404s here
第二種方法的缺點是您可能需要重寫標準錯誤文檔,以便它使用PHP來獲取動態信息以顯示給用戶,例如請求的資源路徑。
利用$_SERVER['REQUEST_URI']
,您可以輕鬆地檢查文件,導致錯誤的結束,然後拋出一個頭到正常404,如果它不符合您的需求或只呈現不同的404
在404.php文件將這個
$bad_url = $_SERVER['REQUEST_URI'];
$bad_extension = substr(strrchr($bad_url,'.'),1);
if($bad_extension != "php"){
//Not PHP
}else{
//PHP
}
發送301而不是404看起來很奇怪 – 2012-03-09 12:08:25
你是什麼意思「就需要一切」是什麼意思? 404是任何未找到的HTTP請求的響應代碼,無論這是PHP請求還是圖像。 – 2012-03-09 09:19:28
我的意思是,如果我做www.example.com/img/errorimg.jpg他會帶我到www.example.com/404.php,我不想那個...... – user1040899 2012-03-09 09:21:24
你可以嘗試使用URL重寫(mod_rewrite)實現 - 將請求重定向到任何不存在的.php文件到您的自定義404.php - 這是可能的(僅限3或4行) – LazyOne 2012-03-09 09:50:29