मेरे पास एक साइट है, जो लंबे समय तक, यूआरएल गलत होने पर उपयोगकर्ता को सीधे होमपेज पर रीडायरेक्ट करती है। 404 त्रुटि लौटाने के बजाय, स्क्रिप्ट ने header('location: /'); die(); का उपयोग किया।

मैंने उस लाइन को header("HTTP/1.0 404 Not Found");die(); में बदल दिया है और सर्वर ने 404 त्रुटि संदेश भेजना शुरू कर दिया है।

लेकिन, अब मुझे ब्राउजर 404 त्रुटि मिलती है, न कि मेरा कस्टम 404 पेज। तो, मैंने .htaccess फ़ाइल खोली है और जोड़ा है

ErrorDocument 404 /index.php

लेकिन कोई सफलता नहीं, मुझे अभी भी ब्राउज़र 404 पेज मिल रहा है, न कि मेरा 404 पेज (मैंने इसे /etc/apache2/sites-available/site-conf के तहत सेट करने का भी प्रयास किया है)

यह भी कोशिश की:

    $_SERVER['REDIRECT_STATUS'] = 404;
    header("HTTP/1.1 404 Not Found");
header('location: /');
    die();

और फिर भी - कोई सफलता नहीं

कोई विचार?

1
TwoDiv 4 जुलाई 2011, 15:46
आप किस ब्राउज़र का उपयोग कर रहे हैं? आईई की तरह लगता है।
 – 
Bernd Ott
4 जुलाई 2011, 15:50
अर्थात? नहीं, यह उबंटू पर क्रोम था। लेकिन यह ब्राउज़र की समस्या नहीं है, wget का उपयोग करते समय समान प्रतिक्रिया मिली।
 – 
TwoDiv
4 जुलाई 2011, 16:18
कुछ ब्राउज़र स्वयं का संदेश दिखाते हैं यदि सर्वर से संदेश/पृष्ठ 1024 बाइट्स से कम है।
 – 
Bernd Ott
5 जुलाई 2011, 01:25
क्या आप यूआरएल प्रदान कर सकते हैं ताकि हम त्रुटि देख सकें? इससे हमें इसे हल करने में मदद मिलेगी।
 – 
Drazisil
5 जुलाई 2011, 05:06

3 जवाब

सबसे बढ़िया उत्तर

header("HTTP/1.1 404 Not Found");
include('index.php'); // maybe you have to adjust the path;
exit;

जब आप शीर्षलेख (स्थान) का उपयोग करते हैं तो आप स्थिति को 3xx पर सेट कर रहे होते हैं। और यदि स्थिति 404 है, तो ब्राउज़र को किसी स्थान शीर्षलेख का अनुसरण करने की आवश्यकता नहीं है। इसे केवल 3xx प्रतिक्रियाओं में स्थान शीर्षलेख का पालन करना चाहिए।

2
Maxim Krizhanovsky 4 जुलाई 2011, 18:00
आप सही हैं, मैंने रन के अंत में पेज की सेवा के लिए अपनी स्क्रिप्ट बदल दी है
 – 
TwoDiv
6 जुलाई 2011, 10:17

आप कुछ चीजें मिला रहे हैं।

जब आपकी स्क्रिप्ट चलती है, तो इसका मतलब है कि एक पेज है। अपनी स्क्रिप्ट के भीतर आप हेडर के माध्यम से स्थिति को नियंत्रित कर सकते हैं ("HTTP/1.1 404 नहीं मिला"); यह ब्राउज़र "नहीं मिला" कहता है। अंत में एक पृष्ठ 404 स्थिति के साथ परोसा जाता है। उस पृष्ठ का सभी आउटपुट त्रुटि पृष्ठ है। सब कुछ आपकी स्क्रिप्ट द्वारा किया जाता है।

जब आप एक htaccess फ़ाइल में 404 त्रुटि पृष्ठ परिभाषित करते हैं, तो यह पृष्ठ प्रदर्शित होता है यदि अपाचे सर्वर नहीं मिली त्रुटि को संभालता है। इसका मतलब है कि आपके ब्राउज़र को उस फ़ाइल तक पहुंचना है जो सर्वर पर मौजूद नहीं है। तब फ़ाइल index.php प्रदर्शित होती है।

शीर्ष लेख स्थिति और शीर्ष लेख स्थान का एक साथ उपयोग नहीं किया जा सकता है। एक स्थान कमांड स्थिति को रीडायरेक्ट कोड 3xx पर सेट करता है। पुनर्निर्देशन के बाद सर्वर कोड 200 के साथ पेज परोसता है।

आप क्या कर सकते हैं, क्लाइंट को अपने सर्वर पर एक यादृच्छिक यूआरएल पर रीडायरेक्ट करें। तो सर्वर 404 पेज प्रदर्शित कर रहा है।

1
Bernd Ott 5 जुलाई 2011, 11:55

पहले जांचें कि क्या आपके अपाचे कॉन्फ़िगरेशन में .htaccess फ़ाइलें सक्षम हैं (AllowOverride निर्देश)। आपके द्वारा प्रयास किया गया त्रुटि दस्तावेज़ काम करना चाहिए!

0
jgendera 5 जुलाई 2011, 03:14