if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
यह काम क्यों नहीं होगा? मुझे एक खाली पृष्ठ मिलता है।
if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
यह काम क्यों नहीं होगा? मुझे एक खाली पृष्ठ मिलता है।
जवाबों:
आपका कोड तकनीकी रूप से सही है। यदि आपने उस रिक्त पृष्ठ के शीर्षलेखों को देखा, तो आपको एक 404 शीर्षलेख दिखाई देगा, और अन्य कंप्यूटर / प्रोग्राम प्रतिक्रिया को सही ढंग से पहचानने में सक्षम होंगे क्योंकि फ़ाइल नहीं मिली।
बेशक, आपके उपयोगकर्ता अभी भी एसओएल हैं। आम तौर पर, 404 वेब सर्वर द्वारा नियंत्रित किए जाते हैं।
समस्या यह है कि एक बार वेब सर्वर PHP पेज को प्रोसेस करना शुरू कर देता है, यह पहले से ही उस बिंदु से गुजर चुका है जहां यह 404 को हैंडल करेगा
404 हेडर प्रदान करने के अलावा, PHP अब वास्तविक 404 पेज के आउटपुट के लिए जिम्मेदार है।
if (strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
exit();
}
यदि आप अंतिम दो इको लाइनों को देखते हैं, तो आपको वह सामग्री दिखाई देगी। आप चाहें तो इसे कस्टमाइज़ कर सकते हैं।
यह सही व्यवहार है , 404 पेज की सामग्री बनाने के लिए यह आपके ऊपर है।
404 हेडर का उपयोग मकड़ियों और डाउनलोड-प्रबंधकों द्वारा यह निर्धारित करने के लिए किया जाता है कि क्या फ़ाइल मौजूद है।
(404 हेडर वाला पृष्ठ Google या अन्य खोज-इंजन द्वारा अनुक्रमित नहीं किया जाएगा)
सामान्य उपयोगकर्ता हालांकि http-headers को नहीं देखते हैं और पृष्ठ को एक सामान्य पृष्ठ के रूप में उपयोग करते हैं।
रिकॉर्ड के लिए, यह ऑल-केस हैंडलर है:
<?php
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header("Status: 404 Not Found");
$_SERVER['REDIRECT_STATUS'] = 404;
?> <!-- 404 contents below this line -->
die()
आवश्यकता है
डिफ़ॉल्ट सर्वर 404 पृष्ठ लोड करें, यदि आपके पास एक है, उदाहरण के लिए अपाचे के लिए परिभाषित:
if(strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
readfile('404missing.html');
exit();
}
5.4 php के बाद से अब आप कर सकते हैं http_response_code(404);
एक अन्य समाधान, @ किटसेट पर आधारित है।
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
header("Status: 404 Not Found");
$_SERVER['REDIRECT_STATUS'] = 404;
//If you don't know which web page is in use, use any page that doesn't exists
$handle = curl_init('http://'. $_SERVER["HTTP_HOST"] .'/404missing.html');
curl_exec($handle);
यदि आप एक ऐसी वेबसाइट की प्रोग्रामिंग कर रहे हैं जो सर्वर में होस्ट की गई है जिस पर आपका नियंत्रण नहीं है, तो आपको पता नहीं चलेगा कि कौन सी फाइल "404missone.html" है। हालाँकि आप अभी भी ऐसा कर सकते हैं।
इस तरह, आपने एक ही सर्वर पर एक सामान्य 404 पृष्ठ के समान परिणाम प्रदान किए। एक पर्यवेक्षक मौजूदा PHP पृष्ठ रिटर्न 404 और एक गैर-मौजूदा पृष्ठ के बीच अंतर नहीं कर पाएगा।
थोड़ा छोटा संस्करण। अजीब गूँज को दबाओ।
if (strstr($_SERVER['REQUEST_URI'],'index.php')){
header('HTTP/1.0 404 Not Found');
exit("<h1>404 Not Found</h1>\nThe page that you have requested could not be found.");
}
if($_SERVER['PHP_SELF'] == '/index.php'){
header('HTTP/1.0 404 Not Found');
echo "<h1>404 Not Found</h1>";
echo "The page that you have requested could not be found.";
die;
}
इको स्टेटमेंट को कभी भी सरल न करें, और ऊपर की तरह अर्ध कोलन को कभी भी न भूलें, पृष्ठ पर एक रूट भी क्यों चलाएं, हम आसानी से बस php_self चला सकते हैं
आप इसे सही कर रहे हैं, हालांकि यह कुछ शोधन का उपयोग कर सकता है। ऐसा लगता है कि इसे संबोधित किया गया है तो आइए व्यावहारिक अनुप्रयोग लाभों पर बात करते हैं:
हमारी एक पुरानी वेबसाइट जिसमें बहुभाषी तकनीक डॉक्स का एक बड़ा संग्रह है, अगर इसे एक अन्य शर्त के अंदर निष्पादित कर रहा है:
if (<no file found>){
die("NO FILE HERE");
}
समस्या (बेकार संदेश और बुरे उपयोगकर्ता अनुभव के अलावा) कि हम आम तौर पर खराब लिंक और लापता दस्तावेजों की जांच के लिए एक लिंक क्रॉलर (हमारे मामले में अखंडता) का उपयोग करते हैं। इसका मतलब है कि हमें पूरी तरह से सही 200 नो एरर रिस्पॉन्स मिल रहा था, जिसमें बताया गया था कि वहां एक फाइल थी। वफ़ादारी यह नहीं जानती थी कि हम एक पीडीएफ की उम्मीद कर रहे हैं, इसलिए हमें मैन्युअल रूप से php के साथ 404 हेडर जोड़ना होगा। मरने के बाद अपना कोड जोड़कर (क्योंकि बाद में कुछ भी निष्पादित नहीं होगा और हेडर हमेशा किसी भी तरह से प्रदान किए गए html से पहले होना चाहिए), अखंडता (जो एक ब्राउज़र की तरह अधिक या कम व्यवहार करता है) एक 404 लौटाएगा और हमें पता होगा कि लापता कहां देखना है फ़ाइलें। उपयोगकर्ता को यह बताने के अधिक सुरुचिपूर्ण तरीके हैं कि कोई त्रुटि है,
header('HTTP/1.0 404 Not Found');
die("NO FILE HERE");
इसे इस्तेमाल करे:
if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
echo "<head><title>404 Not Found</title></head>";
echo "<h1>Not Found</h1>";
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
echo "<p>The requested URL ".$uri." was not found on this server.</p>";
exit();
}
तुम्हें पता है, मेरी वेबसाइट में मैंने ऐसा कुछ बनाया है:
$uri=$_SERVER['REQUEST_URI'];
$strpos=strpos($uri, '.php');
if ($strpos!==false){
$e404="The page requested by you: "".$_SERVER['REQUEST_URI']."", doesn't exists on this server.";
$maybe=str_replace('.php','',$uri);
$maybe=str_replace('/','',$maybe);
die("<center><h1>404</h1><hr><h3>$e404</h3><h3>Maybe try <a href=$maybe>www.leaveyortexthere.p.ht/$maybe</a>?</center>");
}
मुझे उम्मीद है इससे आपको मदद मिली होगी।
मैं इस समस्या के लिए आया था .. मुझे लगता है कि आपके सर्वर पर एक गैर मौजूदा लिंक पर पुनर्निर्देशित करना चाल हो सकता है! क्योंकि सर्वर उसका 404 लौटाएगा:
header('Redirect abbb.404.nonexist');
<जो कि निश्चित रूप से मौजूद नहीं है
यदि आप सर्वर के डिफ़ॉल्ट 404 पृष्ठ को दिखाना चाहते हैं, तो आप इसे इस तरह फ्रेम में लोड कर सकते हैं:
echo '<iframe src="/something-bogus" width="100%" height="100%" frameBorder="0" border="0" scrolling="no"></iframe>';