2009-08-07 16 views
7

मेरे पास कोड के साथ कहीं header('HTTP/1.0 404 Not Found'); है लेकिन यह किसी कारण से अपाचे के डिफ़ॉल्ट 404 पृष्ठ पर रीडायरेक्ट नहीं करता है।जब मैं PHP के साथ 404 हेडर भेजता हूं तो अपाचे क्यों 404 त्रुटि नहीं दिखाता है?

मेरे पास .htaccess फ़ाइल पर एक रिवाइट नियम है जो index.php पर प्रत्येक अनुरोध को रीडायरेक्ट करता है। क्या यह समस्या हो सकती है?

उत्तर

18

शीर्षलेख अपाचे को 404 पृष्ठ प्रदर्शित करने के लिए नहीं बताता है। इसके बजाय, जब अपाचे अपने 404 पेज को प्रदर्शित करता है, तो यह इसके साथ 404 हेडर भेजता है। हेडर का अर्थ है ब्राउज़र, सर्वर पर नहीं। अपाचे 404 प्रदर्शित करता है जब इसे प्रदर्शित करने के लिए उचित फ़ाइल नहीं मिलती है। चूंकि आप एक PHP स्क्रिप्ट में हैं, अपाचे को पहले से ही एक फाइल मिली है जो इसे प्रदर्शित कर सकती है, और इस प्रकार अपना 404 पेज नहीं दिखाएगा।

7

PHP द्वारा भेजे गए शीर्षलेख केवल इस मामले में ब्राउज़र के लिए महत्वपूर्ण हैं। अपाचे अपना खुद का पेज नहीं बना रहा है क्योंकि आप पहले से ही पेज को संसाधित कर रहे हैं, और यदि आपने कुछ भेजा है, तो दोनों संघर्ष करेंगे।

हां, .htaccess फ़ाइल अपाचे को एक त्रुटि पृष्ठ दिखाने से रोकने जा रही है क्योंकि आपके नियम अपाचे को लगता है कि अब 404 त्रुटि नहीं है, क्योंकि इसे दिखाने के लिए एक पृष्ठ मिला है।

हेडर भेजना वास्तव में केवल 'स्थिति संदेश' है, और ब्राउज़र या सर्वर किसी विशेष पृष्ठ को नहीं दिखाता है। (हालांकि अधिकांश ब्राउज़र करेंगे)।

जैसा कि डेव ने टिप्पणियों में बताया, आप अपने स्वयं के कस्टम त्रुटि पृष्ठ पर 404 त्रुटियां भेजना चाहेंगे।

+2

तो मुझे अपने स्वयं के "पृष्ठ नहीं मिला" पृष्ठ पर रीडायरेक्ट करना चाहिए? –

+4

हां, आमतौर पर PHP ऐप्स क्या करते हैं यदि वे ऐसा संदेश प्रदर्शित करना चाहते हैं। – Amber

+1

कृपया रीडायरेक्ट न करें। यह गलत वर्तनी को सही करने के लिए बहुत कठिन बनाता है। बस 404 पेज की सेवा करें और इसके साथ किया है। – TRiG

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