मैं बाहरी स्क्रिप्ट को लागू किए बिना अपाचे में 503 की स्थिति कैसे वापस कर सकता हूं


26

समय-सम्मानित SE_firendly फैशन में रखरखाव के लिए नीचे रहने के दौरान मुझे अपनी किसी साइट से 503 स्थिति कोड वापस करने की आवश्यकता है। मैं बाहरी लिपियों को शामिल किए बिना यह काम करने के लिए बाहर नहीं जा सकता, जो मैं बल्कि बचना चाहूंगा।

क्या कोई अपाचे निर्देश है जो मुझे एक हैप्पी स्क्रिप्ट का सहारा लिए बिना एक मनमाने ढंग से HTTP स्थिति कोड वापस करने की अनुमति देगा जैसे कि php स्क्रिप्ट जो स्टेटस हैडर सेट करता है?


2
मैं नहीं काफी यकीन है कि एक "हैक" ... तरह एक वेब सर्वर करने के लिए डिज़ाइन किया गया है कि वास्तव में क्या की है कि के रूप में एक PHP फ़ाइल का वर्गीकरण चल रहा हूँ कि ...
मार्क हेंडरसन

3
हम्म। मुझे लगता है कि सर्वर की प्रतिक्रिया की एक पंक्ति को सेट करने के लिए पूरी व्याख्या की गई स्क्रिप्टिंग भाषा को हैक के रूप में अर्हता प्राप्त करना है। विस्तृत कार्यपत्रकों के बिना प्रतिक्रिया शीर्षकों की पंक्तियों को स्थापित करना मुझे लगता है कि वेब सर्वर क्या करने के लिए तैयार किए गए थे।
डैन मैकिनले

पर एक ही सवाल webmasters.stackexchange.com/questions/61241/...
rubo77

जवाबों:


32

यह प्रत्येक अनुरोध को 503 स्थिति के साथ-साथ एक स्थिर होल्डिंग पेज पर कार्य करता है।

RedirectMatch 503 ^/(?!holding\.html)
ErrorDocument 503 /holding.html
Header always set Retry-After "18000"

रीडायरेक्टमैच का उपयोग होल्डिंग पेज को ही नकारने के लिए किया जाता है जो अन्यथा एक अनंत लूप बनाता है।

mod_header का उपयोग रिट्री-आफ्टर हेडर सेट करने के लिए किया जाता है ताकि आप Google / अन्य बॉट्स आदि को बता सकें कि आपको इस उदाहरण में 18000 सेकंड (5 घंटे) के बाद बैकअप लेना चाहिए। आप sudo ap2enmod headermod_header (हैडर निर्देश के लिए आवश्यक है) को सक्रिय कर सकते हैं ।


2
+1: एक पक्ष टिप्पणी: आप केवल [RedirectMatch 503। *] जोड़ सकते हैं और [हैडर हमेशा रिट्री-आफ्टर "18000"] नियमों को सेट करता है और यह डिफ़ॉल्ट 503 त्रुटि संदेश के साथ काम करता है। विभिन्न भाषाओं के लिए एक अलग संदेश सेट करने के लिए conf.d / स्थानीयकृत-त्रुटि-पृष्ठ फ़ाइल की जाँच करें (जिन्हें बातचीत, उपनाम और मॉड्यूल शामिल करना आवश्यक है)।
लेप

यह काम करता हैं! अपनी निजी वेबसाइट के लिए, मैं उपयोग करता हूं RedirectMatch 503 ^/(?!\.Error/.*|dragonlord-bg\.jpg)
bwDraco

7

प्रयत्न

Redirect 503 / /

से http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirect :

अन्य स्टेटस कोड को स्टेटस के रूप में संख्यात्मक स्टेटस कोड देकर लौटाया जा सकता है। यदि स्थिति 300 और 399 के बीच है, तो URL तर्क मौजूद होना चाहिए, अन्यथा इसे छोड़ दिया जाना चाहिए। ध्यान दें कि स्थिति अपाचे कोड के लिए जानी जानी चाहिए (http_protocol.c में फ़ंक्शन send_error_response देखें)।

अतिरिक्त नोट: यह 503 त्रुटि के लिए डिफ़ॉल्ट / कॉन्फ़िगर किया गया ErrorDocument प्रदर्शित करेगा।


धन्यवाद दाविद mod_alias वह नहीं है जहां मुझे उस उत्तर को खोजने की उम्मीद थी, लेकिन यह काम करने के लिए लगता है।
डैन मैकिनले

हाँ, रिडायरेक्ट वास्तव में आप क्या कर रहे हैं के लिए सही क्रिया नहीं है :)
डेविड पशली

503 रीडायरेक्ट यह एक argoment, URL-path गुम है, जो हमेशा अनिवार्य होता है। दूसरी ओर URL को छोड़ दिया जाना चाहिए यदि पुनर्निर्देशित कोड 300-399 नहीं है

1
मुझे ऐसा करने में एक त्रुटि मिलती है: "रीडायरेक्ट दो या तीन तर्क लेता है, एक वैकल्पिक स्थिति, फिर दस्तावेज़ को रीडायरेक्ट और गंतव्य URL होना चाहिए", क्या आप संदर्भ में अधिक पूर्ण उदाहरण दे सकते हैं?
टॉम

4
Redirect 503 /काम करने लगता है।
mpartel

0

अपने रखरखाव मोड को अधिक लचीला बनाने के लिए, 503 सेट करें जब एक विशेष फ़ाइल मौजूद हो, ala:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/.maintenance -f
RewriteRule .* - [R=503]

नोट: DOCUMENT_ROOT का स्थान httpd 2.2 और 2.4 के बीच भिन्न हो सकता है

इस तरह से आपको बस इतना करना है "टच /पथ / ओट /droroot/.maintain" और आपकी साइट तुरंत 503 की वापसी शुरू कर देगी। तो फिर यह सब स्पष्ट करने के लिए, एक कस्टम अच्छी तरह से स्वरूपित HTML त्रुटि पेज बनाने के लिए और सही अपाचे सर्वर की config फाइल में जोड़ें:

ProxyErrorOverride on
ErrorDocument 503 /error/503.html

और बोनस बिंदुओं के लिए यदि आपके पास कई वेब सर्वर हैं, तो या तो एक साझा फाइल सिस्टम पर .maintain का स्थान बनाएं, या अधिक बोनस सर्वर के लिए:

pdsh -w $web1_ip,$web2_ip,$web3_ip "sudo touch /path/to/docroot/.maintenance"

रखरखाव मोड फ़ाइल को आधारित बनाने का लाभ यह है कि यह तब काम करता है जब आपका आवेदन नहीं होता है, यह त्वरित और सरल है, और एक फ्रंटेंड कैचिंग प्रॉक्सी के लिए इसे संभालना आसान है क्योंकि आप सभी गिर गए 503 के हैंडल को एक झटके में संभाल सकते हैं।

सूत्रों का कहना है:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.