2012-03-09 17 views
5

मैं इनको साथ 404 के लिए एक व्यक्तिगत पेजकस्टम 404 त्रुटि पृष्ठ - PHP पृष्ठों के लिए केवल

ErrorDocument 404 /404.php 

यह ठीक काम करता है, लेकिन यह सब कुछ, .jpg .js, .css आदि लेता है ...
मैं इसे सिर्फ .php लेने और अन्य सभी के लिए सामान्य 404 त्रुटि करना चाहता हूं।

मुझे कहीं भी यह विकल्प नहीं मिला।

बहुत बहुत धन्यवाद।

+0

क्या आप "यह सब कुछ लेता है" मतलब है? 404 किसी HTTP अनुरोध के लिए एक प्रतिक्रिया कोड है जो पाया नहीं गया है, चाहे कोई भी php अनुरोध या छवि हो। –

+0

मेरा मतलब यह है कि अगर मैं www.example.com/img/errorimg.jpg करता हूं तो वह मुझे www.example.com/404.php पर ले जा रहा है, और मुझे यह नहीं चाहिए ... – user1040899

+0

आप कर सकते हैं यूआरएल रिवाइटिंग (mod_rewrite) के साथ इसे कार्यान्वित करने का प्रयास करें - किसी भी गैर-मौजूदा .php फ़ाइल को अपने कस्टम 404.php पर अनुरोधों को रीडायरेक्ट करें - यह संभव है (केवल 3 या 4 लाइनें) – LazyOne

उत्तर

5

सुनिश्चित नहीं हैं, लेकिन यह एक कोशिश दे:

<Files ~ "\.php$"> 
    ErrorDocument 404 /404.php 
</Files> 

उद्धरण से Files Directive प्रलेखन:

< फ़ाइलें > निर्देश फ़ाइल नाम से घिरा निर्देशों के दायरे को सीमित करता है।

+0

+1 यह पूरी तरह से काम करता है, और यह वही है जो OP ने – ShadowScripter

+0

के लिए पूछा ठीक है! आपकी मदद के लिए बहुत बहुत धन्यवाद :-) – user1040899

2

यह करने के लिए कुछ संभावित दृष्टिकोण रहे हैं, लेकिन मैं निम्न में से एक करना होगा:

आप 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 

    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 का उपयोग किया गया हो, जैसे अनुरोध किया गया संसाधन पथ।

1

$_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 
} 
+0

404 के बजाय 301 भेजना काफी अजीब लग रहा है –

संबंधित मुद्दे