कस्टम 401, 403 और 500 त्रुटि पेज कैसे बनाएं?


27

जब 404 त्रुटि सामने आती है, तो 404.php टेम्पलेट फ़ाइल का उपयोग कस्टम त्रुटि संदेश को प्रस्तुत करने के लिए किया जा सकता है। यह खाका पदानुक्रम लेख में प्रलेखित है ।

मेरा उद्देश्य 401, 403 और 500 त्रुटियों के लिए कस्टम त्रुटि पेज बनाना है। मैंने अपनी थीम की डायरेक्टरी में 401.php, 403.php और 500.php फाइलें बनाने की कोशिश की है, लेकिन यह काम नहीं करता है।

मैं वर्डप्रेस में कस्टम 401, 403 और 500 त्रुटि पेज कैसे बना सकता हूं?


2
आप इस कोड को एक प्रारंभिक बिंदु के रूप में उपयोग करने का प्रयास कर सकते हैं: jesin.tk/wordpress-custom-403-401-error-page
जो

यहां एक मौजूदा प्लगइन है जो आपको 403 और 401 त्रुटियों जैसे त्रुटि पृष्ठों को अनुकूलित करने की सुविधा देता है: http://wordpress.org/plugins/custom-error-pages/ जो आपको बस इंस्टॉल और सक्रिय करना है। हालाँकि, आपको प्लगइन्स विकल्प पृष्ठ में निर्दिष्ट .htaccess (या nginx.conf) फ़ाइल को मैन्युअल रूप से संपादित करना होगा।
पाई प्रेमी

जवाबों:


15

त्रुटि पृष्ठों को .HTACCESS के माध्यम से परोसा जाता है, यदि आप अपाचे का उपयोग कर रहे हैं तो आप ErrorDocumentनिर्देश का उपयोग करेंगे और उसमें स्थिति और URL जोड़ेंगे।

तो यह आपकी .htaccess फ़ाइल में इस तरह दिखेगा:

ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500

आप नीचे दिए गए फ़ंक्शन का उपयोग कर सकते हैं। यह गतिशील रूप से आपके लिए HTACCESS फ़ाइल की आवश्यकता को जोड़ देगा या आप इसे मैन्युअल रूप से कर सकते हैं।

1. पेज जोड़ें:

फिर आपको अपने डैशबोर्ड में जाने और किसी भी सामान्य पृष्ठ ('डैशबोर्ड'> 'पृष्ठ'> 'नया') जैसे पृष्ठ बनाने की आवश्यकता होगी। उन्हें शीर्षक दिया जा सकता है कि आप जो भी चाहते हैं, बस सुनिश्चित करें कि स्लग नीचे के फ़ंक्शन के समान है (स्लग: त्रुटि-401, त्रुटि -403, त्रुटि -404, त्रुटि -500)। इसके अलावा, आप इन विशिष्ट पृष्ठों के लिए जो भी लेआउट और शैली चाहते हैं, उसे बनाने के लिए पेज टेम्पलेट का उपयोग कर सकते हैं। इसके लिए वर्डप्रेस कोडेक्स निर्देशों का पालन करें।

2. समारोह जोड़ें:

// Create Custom Error Pages in WordPress using HTACCESS
function royal_custom_error_pages() {

    // Get HTACCESS path & dynamic website url
    $htaccess_file = '.htaccess';
    $website_url = get_bloginfo('url').'/';

    // Check & prevent writing error pages more than once
    $check_file = file_get_contents($htaccess_file);
    $this_string = '# BEGIN WordPress Error Pages';

    if( strpos( $check_file, $this_string ) === false) {

    // Setup Error page locations dynamically
    $error_pages .= PHP_EOL. PHP_EOL . '# BEGIN WordPress Error Pages'. PHP_EOL. PHP_EOL;
    $error_pages .= 'ErrorDocument 401 '.$website_url.'error-401'.PHP_EOL;
    $error_pages .= 'ErrorDocument 403 '.$website_url.'error-403'.PHP_EOL;
    $error_pages .= 'ErrorDocument 404 '.$website_url.'error-404'.PHP_EOL;
    $error_pages .= 'ErrorDocument 500 '.$website_url.'error-500'.PHP_EOL;
    $error_pages .= PHP_EOL. '# END WordPress Error Pages'. PHP_EOL;

    // Write the error page locations to HTACCESS
    $htaccess = fopen( $htaccess_file, 'a+');
    fwrite( $htaccess, $error_pages );
    fclose($htaccess);

    }
}

add_action('init','royal_custom_error_pages'); // This will run the function everytime, not ideal!

// register_activation_hook( __FILE__, 'royal_custom_error_pages' ); // Using a plugin, runs only once!

नायब !! अबूझ मुहूर्त पर नोट

अपनी वेबसाइट या URL संरचना बदलते समय

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

हुक को केवल आग लगाने के लिए सही हुक

ध्यान देने वाली बात यह है कि यह फ़ंक्शन है, initहर बार आपके पृष्ठों को लोड करने के लिए कार्रवाई का उपयोग करना होगा जो सुपर अनावश्यक और बेकार है इसलिए मैं इसे एक प्लगइन में जोड़ने का सुझाव दूंगा और इसके register_activation_hookबजाय इसका उपयोग करूंगा ताकि यह केवल एक बार प्लगइन सक्रियण पर आग लग जाए

फ़ाइल अनुमतियाँ

यह भी जरूरी है कि उपरोक्त फ़ंक्शन का उपयोग करते समय आपका .htaccess लेखन योग्य हो, इसलिए सुनिश्चित करें कि इसमें सही फ़ाइल अनुमतियाँ हैं, CHMOD777 जैसी कोई चीज़।


यह निश्चित नहीं है कि यह कैसे काम करता है, क्या संपादन .htaccess फ़ाइल को मैन्युअल रूप से करता है, लेकिन यह काम नहीं करता है। मैं लोकलहोस्ट पर ऐसा करने की कोशिश कर रहा हूं और स्थानीयहोस्ट पर यह संभव होना चाहिए, क्योंकि मेरे पास हर चीज, सर्वर और क्लाइंट तक पहुंच है। लेकिन यह काम क्यों नहीं कर रहा है?
सोलोमन क्लॉसन

@SolomonClosson, शायद आप इसके लिए मेरे द्वारा लिखे गए प्लगइन का उपयोग करने की कोशिश कर सकते हैं, यह आपके लिए सब कुछ करेगा और कोड का अनुसरण करता है :)। आधिकारिक WordPress.Org प्लगइन
मैट रॉयल

@MattRoyal फंक्शन बहुत बढ़िया काम करता है और मैं इसका इस्तेमाल अन्य htaccess रूल्स बनाने में कर रहा हूँ। कृपया मुझे डिफ़ॉल्ट wp htaccess नियमों के ऊपर फ़ाइल के शीर्ष पर नियम कैसे डाले जा सकते हैं? फिलहाल htaccess फ़ाइल के नीचे नियम जोड़े गए हैं। धन्यवाद।
लोटेकसून

मैं समाधान से असहमत हूँ: 1- आप 777 वेबसर्वर पर कुछ भी नहीं कर सकते हैं! यह सामान्य रूप से सिर्फ एक बुरा अभ्यास है और प्रमुख सुरक्षा छिद्रों की ओर जाता है। 2- आप वेबसाइट पर हर अनुरोध पर एक फाइल लिखने को जोड़ रहे हैं, एक लिखित कार्रवाई होने के नाते यह फाइल पर एक लॉक बनाएगा जिससे आप केवल उस समय लिख सकते हैं जब आप अपने अनुरोधों की संख्या कम कर रहे होंगे और एक साथ जवाब देंगे। 3- एक वेबसाइट में सर्वर की निर्भरता नहीं होनी चाहिए जहां वह चलता है, अगर यह एक सिस्टम पर माइग्रेट हो जाता है जहां उदाहरण के लिए nginx का उपयोग किया जाता है, तो यह अपेक्षित रूप से काम करना बंद कर देगा। ... जारी है
एडुआर्डो ओलिवेरा

4- त्रुटियों को हथियाने के क्लीनर तरीके हैं stackoverflow.com/a/34619308/768516
एडुआर्डो ओलिवेरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.