2015-09-16 8 views
9

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

मान लीजिए कि हम http://website.com/pages/1 को नेविगेट कर रहे हैं और यह, त्रुटि 500 ​​फेंक डिफ़ॉल्ट पेज से सिर्फ पाठ "Error 500 (Internal Server Error)" जो कुछ ऐसा दिखाई देगा के साथ एक रिक्त श्वेत पृष्ठ होता था:

http://i.imgur.com/WLO7JkL.png

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

मैं पृष्ठों का संपादन करके त्रुटि cPanel में से अधिक पृष्ठों में पीएचपी सामग्री नहीं हो सकती कि आप नीचे देख:

http://i.imgur.com/jtYjHj8.png

अगर मैं उपरोक्त त्रुटि 500 ​​पृष्ठ को संपादित करने के लिए, नीचे सामग्री के साथ था समस्या यह होगा कि http://website.com/pages/1http://website.com/500.shtml को अनुप्रेषित और फिर बारी में http://website.com/500.php

को अनुप्रेषित 10

मैं नहीं यह बिल्कुल अन्यथा यह पृष्ठ को ताज़ा करने मात्र हैं 500.php पेज ताज़ा होगी बजाय /pages/1

<script language="javascript"> 
    window.location.href = "http://www.website.com/500.php" 
</script> 
<meta http-equiv="refresh" content="0;URL='http://website.com/500.php'" /> 

ताज़ा एक ही सटीक समस्या मौजूद होगा इसका मतलब रीडायरेक्ट करने के लिए, चाहते हैं बस इसे बिना किया जा रहा है 2 श्रृंखला बजाय पुनर्निर्देश यह सिर्फ का उपयोग कर 1 रीडायरेक्ट किया जाएगा .htaccess फ़ाइल में निम्नलिखित

ErrorDocument 400 http://website.com/400.php 
ErrorDocument 401 http://website.com/401.php 
ErrorDocument 403 http://website.com/403.php 
ErrorDocument 404 http://website.com/404.php 
ErrorDocument 500 http://website.com/500.php 

वर्तमान परिणाम: /500.php पर रीडायरेक्ट किया जा

अपेक्षित परिणाम: बिना अनुप्रेषित http://website.com/pages/1 पर/में 500.php प्रदर्शित

मैं php सामग्री के साथ कस्टम एरर पृष्ठ यह पेज कि त्रुटि फेंक दिया गया है से दूर पुनर्निर्देशित बनाने के बिना कैसे हो सकती है?

वहाँ जड़ के माध्यम से यह करने के लिए एक रास्ता है (सका मैं अपने मेजबान अगर कुछ करने के लिए, तो क्या हुआ? मिलता है)

+1

@ कुया आप एक आंतरिक सर्वर त्रुटि के लिए त्रुटि हैंडलर का उपयोग करने की योजना बना रहे हैं, आंतरिक सर्वर त्रुटि होने पर त्रुटि हैंडलर हमेशा ठीक से कॉल नहीं होते हैं। और मैंने पहले ही यह कहा है, लेकिन मैं इसे फिर से कहूंगा, एचटीएसीएसी का उपयोग करने के बजाय एक पूर्ण पृष्ठ उत्पन्न करना मूर्खतापूर्ण है – Crecket

+0

@ कुया आप किसी पोस्ट से बिट्स नहीं चुनते हैं और उन हिस्सों का जवाब नहीं देते हैं, तो आप सवाल का जवाब देते हैं जो बोल्ड में है और इसके अंत में एक प्रश्न चिह्न है: ** PHP के साथ कस्टम त्रुटि पृष्ठ कैसे हो सकता है बिना त्रुटि को फेंकने वाले पृष्ठ से इसे पुनर्निर्देशित किए बिना? **। मेरा पोस्ट स्पष्ट रूप से रीडायरेक्शन को पुनर्निर्देशित करने और रोकने के बारे में है – Ryflex

उत्तर

1

के रूप में दूसरों को जवाब दे दिया है इस काम करना चाहिए नहीं कर रहा हूँ:

ErrorDocument 500 /500.php 

यदि आप एक पूर्ण यूआरएल निर्दिष्ट नहीं करते हैं तो यह पृष्ठ (एक आंतरिक रीडायरेक्ट) प्रदर्शित करता है, यदि आप पूर्ण यूआरएल निर्दिष्ट करते हैं, तो यह क्लाइंट को रीडायरेक्ट पर वापस ले जाता है। यह अपाचे यहाँ से वर्णन किया गया है के रूप में: http://httpd.apache.org/docs/2.4/mod/core.html#errordocument

ध्यान दें कि जब आप (एक विधि के साथ कुछ भी इस तरह के के सामने रखी गई कि http अर्थात्।) एक ErrorDocument कि एक दूरस्थ यूआरएल को इंगित करता है निर्दिष्ट करें, अपाचे HTTP सर्वर होगा ग्राहक को यह बताएं कि दस्तावेज़ को ढूंढने के लिए क्लाइंट को रीडायरेक्ट भेजें, भले ही दस्तावेज़ उसी सर्वर पर समाप्त हो।

तथ्य यह है कि इसके बाद के संस्करण आप के लिए काम नहीं कर रहा कई चीजों में से एक का अर्थ है:

  1. आप गलत कर रहे हैं और अभी भी पूर्ण URL निर्दिष्ट भले ही आप होने के लिए नहीं दावा करते हैं।
  2. सीपीएनल पूरा यूआरएल जोड़ रहा है (सुनिश्चित नहीं है कि आप .htaccess फ़ाइल को कैसे संपादित करते हैं या यदि यह उपरोक्त जीयूआई के माध्यम से किया जाता है)।
  3. आपका .htaccess फाइल (शायद ध्यान नहीं दिया जा रहा है क्योंकि आप जीयूआई में मूल्यों की स्थापना कर रहे हैं या शायद इसलिए कि FileInfo सर्वर के स्तर पर नहीं सेट है तो यह .htaccess फाइल में निर्दिष्ट नहीं किया जा सकता है (यहाँ देखें: http://httpd.apache.org/docs/2.4/custom-error.html), में कौन सा मामला यह कहीं भी अन्य यूआरएल से पूर्ण यूआरएल उठा रहा है।
  4. 500.php स्क्रिप्ट रीडायरेक्टिंग स्वयं कर रही है (अगर लॉग को सुरक्षित रखता है और देखें कि एक पृष्ठ लौटाया गया है या दो) डेवलपर टूल से स्पष्ट होना चाहिए।
  5. अपाचे में एक बग है (जिसे मैं और दूसरों को पता नहीं है)
  6. मैजिक

क्या आप उन चीजों को देख सकते हैं?

शायद यह जानने में भी मदद कर सकता है कि आप अपाचे का कौन सा संस्करण चालू हैं?

क्या आपने यह देखने के लिए एक सादा 500.html फ़ाइल की कोशिश की है कि यह पुनर्निर्देशित किए बिना काम करता है या नहीं? सिद्धांत रूप में 500.php फ़ाइल भी ठीक होनी चाहिए लेकिन इसे कम करना दिलचस्प होगा (और यह भी दिखाएगा कि 500.html में उस परिवर्तन को उठाया गया था या इस्तेमाल किया गया था या यदि यह अभी भी 500.php पर इंगित कर रहा था, जो शायद दिखाएं कि यह आपके विचार से अन्य कॉन्फ़िगरेशन से उठाया जा रहा था)।

0

आप अपनी .htacces फ़ाइल में कुछ इस तरह जोड़ देते हैं तो यह बस त्रुटि पृष्ठ प्रदर्शित करना चाहिए एक पुनर्निर्देशन के बिना।मैं पूर्ण पथ उपयोग नहीं किया है जैसे आप त्रुटि पृष्ठों के लिए अपने उदाहरण में कर रहे हैं तो मुझे यकीन है कि व्यवहार किस तरह का यह कारण बनता है

ErrorDocument 404 /404.php 
+0

'त्रुटि दस्तावेज़ 500/500.php'' website.com/500.php' पर रीडायरेक्ट करता है – Ryflex

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