Mod_rewrite की छिपी विशेषताएं


119

ऐसा लगता है mod_rewriteकि यह काम करने के कुछ पहलुओं पर थोड़ी उलझन के साथ हाल ही में घूमने वाले धागों की एक अच्छी संख्या है । परिणामस्वरूप मैंने सामान्य कार्यक्षमता पर कुछ नोट संकलित किए हैं, और शायद कुछ कष्टप्रद बारीकियों।

क्या अन्य सुविधाओं / आम मुद्दों का उपयोग कर आप चला रहे हैं mod_rewrite?


जवाबों:


203

कहाँ mod_rewrite नियम रखने के लिए

mod_rewriteनियमों को httpd.confफ़ाइल के भीतर, या फ़ाइल के भीतर रखा जा सकता है .htaccess। यदि आपके पास पहुंच है httpd.conf, तो यहां नियम रखने से प्रदर्शन लाभ मिलेगा (जैसा कि नियमों को एक बार संसाधित किया जाता है, जैसा कि हर बार .htaccessफाइल को कॉल किया जाता है)।

लॉगिंग mod_rewrite अनुरोध

लॉगिंग को httpd.confफ़ाइल के भीतर से सक्षम किया जा सकता है (सहित <Virtual Host>):

# logs can't be enabled from .htaccess
# loglevel > 2 is really spammy!
RewriteLog /path/to/rewrite.log
RewriteLogLevel 2

सामान्य उपयोग के मामले

  1. एक ही बिंदु पर सभी अनुरोधों को फ़नल करने के लिए:

    RewriteEngine on
    # ignore existing files
    RewriteCond %{REQUEST_FILENAME} !-f   
    # ignore existing directories
    RewriteCond %{REQUEST_FILENAME} !-d   
    # map requests to index.php and append as a query string
    RewriteRule ^(.*)$ index.php?query=$1 
    

    अपाचे 2.2.16 के बाद से आप भी उपयोग कर सकते हैं FallbackResource

  2. 301/302 रीडायरेक्ट को हैंडल करना:

    RewriteEngine on
    # 302 Temporary Redirect (302 is the default, but can be specified for clarity)
    RewriteRule ^oldpage\.html$ /newpage.html [R=302]  
    # 301 Permanent Redirect
    RewriteRule ^oldpage2\.html$ /newpage.html [R=301] 
    

    नोट : बाह्य पुनर्निर्देशन लगभग 302 पुनर्निर्देश हैं:

    # this rule:
    RewriteRule ^somepage\.html$ http://google.com
    # is equivalent to:
    RewriteRule ^somepage\.html$ http://google.com [R]
    # and:
    RewriteRule ^somepage\.html$ http://google.com [R=302]
    
  3. एसएसएल मजबूर

    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://example.com/$1 [R,L]
    
  4. सामान्य झंडे:

    • [R]या [redirect]- एक पुनर्निर्देशन के लिए मजबूर करें (302 अस्थायी पुनर्निर्देशन में चूक)
    • [R=301]या [redirect=301]- एक 301 स्थायी पुनर्निर्देशित बल
    • [L]या [last]- फिर से लिखना प्रक्रिया बंद करें (सामान्य नुकसान में नीचे नोट देखें)
    • [NC]या [nocase]- निर्दिष्ट करें कि मिलान असंवेदनशील होना चाहिए


    झंडे के लंबे-रूप का उपयोग करना अक्सर अधिक पठनीय होता है और दूसरों को मदद करेगा जो बाद में आपके कोड को पढ़ने के लिए आते हैं।

    आप एक कॉमा के साथ कई झंडे अलग कर सकते हैं:

    RewriteRule ^olddir(.*)$ /newdir$1 [L,NC]
    

आम नुकसान

  1. मिश्रण mod_aliasशैली के साथ पुनर्निर्देश करता हैmod_rewrite

    # Bad
    Redirect 302 /somepage.html http://example.com/otherpage.html
    RewriteEngine on
    RewriteRule ^(.*)$ index.php?query=$1
    
    # Good (use mod_rewrite for both)
    RewriteEngine on
    # 302 redirect and stop processing
    RewriteRule ^somepage.html$ /otherpage.html [R=302,L] 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # handle other redirects
    RewriteRule ^(.*)$ index.php?query=$1                 
    

    नोट : आप के mod_aliasसाथ मिश्रण कर सकते हैं mod_rewrite, लेकिन इसमें ऊपर दिए गए बुनियादी पुनर्निर्देशों को संभालने की तुलना में अधिक काम शामिल है।

  2. प्रसंग वाक्य रचना को प्रभावित करता है

    .htaccessफ़ाइलों के भीतर , एक प्रमुख स्लैश का उपयोग RewriteRule पैटर्न में नहीं किया जाता है:

    # given: GET /directory/file.html
    
    # .htaccess
    # result: /newdirectory/file.html
    RewriteRule ^directory(.*)$ /newdirectory$1
    
    # .htaccess
    # result: no match!
    RewriteRule ^/directory(.*)$ /newdirectory$1
    
    # httpd.conf
    # result: /newdirectory/file.html
    RewriteRule ^/directory(.*)$ /newdirectory$1
    
    # Putting a "?" after the slash will allow it to work in both contexts:
    RewriteRule ^/?directory(.*)$ /newdirectory$1
    
  3. [L] अंतिम नहीं है! (कभी कभी)

    [L]झंडा किसी भी आगे पुनर्लेखन नियम प्रसंस्करण बंद हो जाता है नियम सेट के माध्यम से है कि पारित करने के लिए । हालाँकि, यदि URL उस पास में संशोधित किया गया था और आप .htaccessसंदर्भ या <Directory>अनुभाग में हैं, तो आपका संशोधित अनुरोध URL पार्सिंग इंजन के माध्यम से फिर से पारित होने वाला है। और अगले पास पर, यह इस बार एक अलग नियम से मेल खा सकता है। यदि आप इसे नहीं समझते हैं, तो अक्सर ऐसा लगता है कि आपके [L]ध्वज का कोई प्रभाव नहीं था।

    # processing does not stop here
    RewriteRule ^dirA$ /dirB [L] 
    # /dirC will be the final result
    RewriteRule ^dirB$ /dirC     
    

    हमारा फिर से लिखना लॉग दिखाता है कि नियम दो बार चलाए जाते हैं और URL दो बार अपडेट किया जाता है:

    rewrite 'dirA' -> '/dirB'
    internal redirect with /dirB [INTERNAL REDIRECT]
    rewrite 'dirB' -> '/dirC'
    

    इसके आस-पास सबसे अच्छा तरीका [END]ध्वज का उपयोग करना है ( Apache डॉक्स देखें ) [L]यदि आप वास्तव में नियमों के सभी प्रसंस्करण (और बाद के पास) को रोकना चाहते हैं। हालाँकि, [END]झंडा केवल Apache v2.3.9 + के लिए उपलब्ध है , इसलिए यदि आपके पास v2.2 या उससे कम है, तो आप बस [L]ध्वज के साथ अटक जाते हैं ।

    पहले के संस्करणों के लिए, आपको RewriteCondURL पार्सिंग इंजन के बाद के पास पर नियमों के मिलान को रोकने के लिए कथनों पर भरोसा करना चाहिए ।

    # Only process the following RewriteRule if on the first pass
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ...
    

    या आपको यह सुनिश्चित करना होगा कि आपका रिवरराइट नियम के संदर्भ में है (यानी httpd.conf) जिसके कारण आपके अनुरोध को फिर से पार्स नहीं किया जाएगा।


10
दोस्त, इंटरनेट पर पूरी तरह से सबसे अच्छा लेख अब आधुनिक पर फिर से लिखना। मुझे उस चीज से नफरत है। क्योंकि मैं कितना mod_rewrite से नफरत करता हूँ, एक लाइटवेट विधर्मी ।
केंट फ्रेड्रिक

3
यह mod_rewrite पर अब तक का सबसे उपयोगी गाइड है। बस के बारे में पता लगाकर रेवेरलॉग ने इतनी सारी समस्याओं को ठीक करने में मदद की कि कुछ ही मिनटों में ट्रैक करने में मुझे क्या दिन लग रहे थे। (मेरा मतलब है कि नियम लिखे गए थे, लेकिन मैं यह पता नहीं लगा सका कि वे काम क्यों नहीं कर रहे थे)
जो चिन

1 साल पुरानी पोस्ट, लेकिन मेरे लिए SO - पर जो अधिक उपयोगी चीजें मिली हैं, उनमें से एक।
एरिक

3
[L]ध्वज का मतलब है एक नियम है पिछले वर्तमान प्रसंस्करण में, इस पुनर्लेखन बंद नहीं होगा, क्योंकि वे आंतरिक पुन: निर्देशन कर रहे हैं, तो अपने dirBपर लागू होते हैं dirCअगले इनको प्रसंस्करण में। अकेले RewriteRule ^(.*)$ index.php?query=$1आंतरिक पुनर्निर्देश का एक अनंत लूप होगा (व्यवहार में यह 10 पुनरावृत्तियों के बाद समाप्त हो गया है)। -1 क्योंकि आप सुझाव देते हैं कि [L] अंतिम नहीं है । यह पुनर्लेखन प्रक्रिया को समाप्त नहीं कर रहा है, लेकिन यह अंतिम है
kbec

3
मेरा मानना RewriteCond %{HTTPS} offहै कि HTTPS कनेक्शन (HTTPS के लिए गैर-एसएसएल ट्रैफ़िक के लिए मजबूर करने के आपके उदाहरण में) की जांच करने का पसंदीदा तरीका है
मैडब्रेक्स

22

यदि आपको .htaccess में आंतरिक पुनर्निर्देश / पुनर्लेखनों को 'ब्लॉक' करने की आवश्यकता है, तो एक नज़र डालें

RewriteCond %{ENV:REDIRECT_STATUS} ^$

स्थिति, जैसा कि यहां चर्चा की गई है


धन्यवाद, यह सिर्फ मेरी समस्या तय हो गई है!
मैथ्यू

मेरे लिए भी धन्यवाद, जीवन रक्षक!
बेंजामिन

यह वास्तव में एक जीवन रक्षक है! लोगों को इसके बारे में अधिक जागरूक होना चाहिए। वास्तव में, मैं हर सवाल को यह सुझाव देने के लिए जा रहा हूँ के बारे में .*के साथ [L]इससे पहले कि मैं यहाँ मिल गया झंडा मैंने पढ़ा है।
क्वर्टी

मैं इस के लिए कई संशोधनों को देखा है 200, !=200, ^., ^$। जाहिरा तौर पर चर 200एक रीडायरेक्ट के लिए सेट हो जाता है , लेकिन अन्य पृष्ठों (त्रुटि और सामान) ने इसे कुछ मूल्य पर सेट किया है। अब जब कि अर्थ यह है कि आप या तो जाँच अगर यह is empty, is not empty, is 200या is not 200, तुम क्या जरूरत पर निर्भर करता है।
क्वर्टी

18

सौदा के साथ सौदा:

आपको लगभग हमेशा RewriteBase सेट करने की आवश्यकता है। यदि आप नहीं करते हैं, तो अपाचे का अनुमान है कि आपका आधार आपकी निर्देशिका के लिए भौतिक डिस्क पथ है। तो इसकी शुरुआत करें:

RewriteBase /

आह। कि पूरी तरह से समस्या मैं तय कर रहा था। उसके लिए धन्यवाद!
टॉम सैवेज

3
किसी भी तरह से कहने RewriteBase ., या कुछ इंगित करने के लिए कि यह URL को समान रखना चाहिए, बस जो आपने निर्दिष्ट किया है उसे बदल रहा है?
जे के

धन्यवाद, यह जानकारी का एक अनमोल टुकड़ा था। :)

2
आपको केवल यह निर्धारित करने की आवश्यकता है RewriteBaseकि क्या आप RewriteRuleनिर्देशन में सापेक्ष पथ प्रतिस्थापन का उपयोग कर रहे हैं । रिश्तेदार रास्तों का उपयोग करने से बचना बेहतर है।
मृदवीत २ Mr'१५

2
मैं इस जवाब से असहमत हूं। हमारी देव टीम में हम RewriteBaseपूरी तरह से बचते हैं क्योंकि लगभग सभी डेवलपर यह समझते हैं कि यह क्या करता है। जैसा कि @ w3d ने कहा, आपको केवल इसकी आवश्यकता है यदि आप वर्णों को सहेजना चाहते हैं और एक ही फाइल में अपने सभी रिवरराइट्स के लिए एक ही आधार लागू करना चाहते हैं। इससे बचने पर आपका कोड दूसरों के लिए स्पष्ट हो जाएगा।
साइमन ईस्ट

13

अन्य नुकसान:

1- कभी-कभी मल्टीव्यू को निष्क्रिय करना एक अच्छा विचार है

Options -MultiViews

मैं MultiViews क्षमताओं के सभी पर अच्छी तरह से कविता नहीं कर रहा हूँ, लेकिन मुझे पता है कि यह सक्रिय होने पर मेरे mod_rewrite नियमों को गड़बड़ कर देता है, क्योंकि इसके गुणों में से एक का प्रयास करना है और एक फ़ाइल के लिए एक एक्सटेंशन का अनुमान लगाना है जो यह सोचता है कि मैं देख रहा हूं ।

मैं समझाता हूँ: मान लीजिए कि आपके पास आपके वेब dir में 2 php फाइलें हैं, file1.php और file2.php और आप इन शर्तों को जोड़ते हैं और अपने .htaccess पर नियम बनाते हैं:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ file1.php/$1 

आप यह मान लेते हैं कि सभी यूआरएल जो एक फ़ाइल या निर्देशिका से मेल नहीं खाते हैं, उन्हें file1.php द्वारा पकड़ा जाएगा। आश्चर्य! इस नियम को url http: // myhost / file2 / somepath के लिए सम्मानित नहीं किया जा रहा है । इसके बजाय आप file2.php के अंदर ले जाए जाते हैं।

क्या चल रहा है कि मल्टीव्यू ने स्वचालित रूप से अनुमान लगाया कि आप वास्तव में चाहते थे कि यूआरएल http: //myhost/file2.php/somepath और खुशी से आपको वहां ले गया।

अब, आपके पास कोई सुराग नहीं है कि बस क्या हुआ और आप उस बिंदु पर सवाल कर रहे हैं जो आपने सोचा था कि आप mod_rewrite के बारे में जानते थे। फिर आप इस नई स्थिति के पीछे तर्क की भावना बनाने की कोशिश करने के लिए नियमों के साथ खेलना शुरू करते हैं, लेकिन जितना अधिक आप कम समझ का परीक्षण कर रहे हैं।

ठीक है, संक्षेप में अगर आप चाहते हैं कि mod_rewrite एक तरह से काम करे जो तर्क का अनुमान लगाता है, तो MultiViews को बंद करना सही दिशा में एक कदम है।

2- FollowSymlinks को इनेबल करें

Options +FollowSymLinks 

यह एक, मैं वास्तव में का विवरण नहीं जानता, लेकिन मैंने इसे कई बार उल्लेख किया है, इसलिए बस ऐसा करें।


धन्यवाद :) मैंने अप्रत्याशित आश्चर्य को देखा जैसे / लॉग / एक्टिविटी में बदलकर /log.txt/activity .. टिप के लिए धन्यवाद :) .. बहुत बुरा कंप्यूटर कभी भी अप्रत्याशित चीज़ों को मज़ेदार नहीं बनाता है जैसे गलती से आपकी सभी महिला सहकर्मियों को फेसबुक पर छेड़खानी करना :)
अट्टुरसम्स

1
+FollowSymLinksmod_rewriteअस्पष्ट सुरक्षा कारणों से, सभी में काम करने के लिए अनिवार्य होने के रूप में प्रलेखन में उल्लेख किया गया है।
जॉय

यहाँ दो कथन मेरी चिंता करते हैं, बेहद: 'मैं मल्टीव्यूस क्षमताओं के सभी पर अच्छी तरह से वचन नहीं देता हूं, लेकिन मुझे पता है कि यह सक्रिय होने पर मेरे mod_rewrite नियमों को गड़बड़ कर देता है' और यह एक 'वह है, जिसका मुझे वास्तव में पता नहीं है , लेकिन मैंने इसे कई बार उल्लेख किया है, इसलिए बस करो। ' मेरी इच्छा है कि आप जैसे लोग उन चीजों के बारे में एसओ पर जवाब नहीं लिखेंगे जिनके बारे में आप अनिश्चित हैं।
theCarver

1
@PaparazzoKid: मुझे लगता है कि आप एक विश्वकोश के लिए SO गलत कर रहे हैं। यह उन लोगों का एक समुदाय है जो साथ काम कर रहे टेक की समझ को सिलाई करने के लिए आ रहे हैं। आपके सामने AW व्हाइट और जॉय के विपरीत, आपकी टिप्पणी मूल्य से लगभग शून्य है। एमवी और एफएसएल कई अपाचे विकल्पों में से 2 हैं। मेरा जवाब विशेष रूप से mod_rw के साथ काम करते समय नुकसान के बारे में है, एक अलग मॉड्यूल, जो कुछ विकल्पों के साथ संघर्ष करता है और दूसरों के साथ काम करता है। मैंने समझाया कि एमवी mod_rw को कैसे प्रभावित करता है और उल्लेख किया कि + FSL एक लोकप्रिय सिफारिश है। जॉय ने पुष्टि की कि यह वास्तव में अनिवार्य है। आप टेबल पर क्या लाते हैं?
माइकल एकोका

धन्यवाद। मैंने सिर्फ एक घंटे का सबसे अच्छा हिस्सा विरासत की साइट पर काम करते हुए और फिर से लिखे गए नियमों को डिबग करने में बिताया, केवल यह देखने के लिए कि मल्टीव्यूज़ यह सब ओवरराइड कर रहा था।
एंड्रयू मैककॉम्ब

5

समीकरण निम्नलिखित उदाहरण के साथ किया जा सकता है:

RewriteCond %{REQUEST_URI} ^/(server0|server1).*$ [NC]
# %1 is the string that was found above
# %1<>%{HTTP_COOKIE} concatenates first macht with mod_rewrite variable -> "test0<>foo=bar;"
#RewriteCond search for a (.*) in the second part -> \1 is a reference to (.*)
# <> is used as an string separator/indicator, can be replaced by any other character
RewriteCond %1<>%{HTTP_COOKIE} !^(.*)<>.*stickysession=\1.*$ [NC]
RewriteRule ^(.*)$ https://notmatch.domain.com/ [R=301,L]

गतिशील लोड संतुलन:

यदि आप अपने सिस्टम को संतुलित करने के लिए mod_proxy का उपयोग करते हैं, तो वर्कर सर्वर की एक डायनामिक रेंज जोड़ना संभव है।

RewriteCond %{HTTP_COOKIE} ^.*stickysession=route\.server([0-9]{1,2}).*$ [NC]
RewriteRule (.*) https://worker%1.internal.com/$1 [P,L]

4

[एल] ध्वज की बेहतर समझ क्रम में है। [एल] झंडा है पिछले, तुम बस को समझने के लिए क्या कारण होगा आपके अनुरोध यूआरएल पार्स इंजन के माध्यम से फिर से कराई जाना है। डॉक्स ( http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_l ) (जोर मेरा) से:

[L] ध्वज mod_rewrite को नियम सेट को संसाधित करने से रोकने का कारण बनता है। अधिकांश संदर्भों में, इसका मतलब है कि यदि नियम मेल खाता है, तो आगे कोई नियम संसाधित नहीं किया जाएगा। यह पर्ल में अंतिम कमांड से संबंधित है, या सी में ब्रेक कमांड इस झंडे का उपयोग यह इंगित करने के लिए करता है कि वर्तमान नियम को आगे के नियमों पर विचार किए बिना तुरंत लागू किया जाना चाहिए।

यदि आप .htaccess फ़ाइलों में या <Directory>अनुभागों में RewriteRule का उपयोग कर रहे हैं, तो नियमों को कैसे संसाधित किया जाता है, इसकी कुछ समझ होना जरूरी है। इसका सरलीकृत रूप यह है कि एक बार नियम संसाधित हो जाने के बाद, फिर से लिखे गए अनुरोध को URL पार्सिंग इंजन को वापस सौंप दिया जाता है ताकि वह इसके साथ हो सके। यह संभव है कि जैसा कि पुनर्लेखन अनुरोध को संभाला जाता है, .htaccess फ़ाइल या<Directory> अनुभाग फिर से सामना किया जा सकता है, और इस तरह से प्रारंभ से फिर से नियम चलाया जा सकता है। आमतौर पर ऐसा तब होगा जब नियमों में से कोई एक पुनर्निर्देशित करता है - या तो आंतरिक या बाहरी - अनुरोध प्रक्रिया शुरू करने का कारण बनता है।

तो [एल] झंडा करता है के लिए किसी भी आगे फिर से लिखने के नियम की प्रोसेसिंग रोक कि पास नियम सेट के माध्यम से। हालाँकि, यदि आपके नियम ने [L] अनुरोध को संशोधित किया है, और आप .htaccess संदर्भ या <Directory>अनुभाग में हैं, तो आपका संशोधित अनुरोध URL पार्सिंग इंजन के माध्यम से फिर से पारित होने वाला है। और अगले पास पर, यह इस बार एक अलग नियम से मेल खा सकता है। यदि आपको समझ में नहीं आया कि क्या हुआ, तो ऐसा लगता है कि [L] ध्वज के साथ आपका पहला फिर से लिखना नियम है।

इसके आस-पास सबसे अच्छा तरीका है कि [L] ध्वज के बजाय [END] ध्वज ( http://httpd.apache.org/docs/current/rewrite/flags.html#flag_end ) का उपयोग करें, यदि आप वास्तव में रोकना चाहते हैं नियमों के सभी आगे की प्रक्रिया (और बाद में पुनरावर्ती)। हालाँकि, [END] ध्वज केवल Apache v2.3.9 + के लिए उपलब्ध है, इसलिए यदि आपके पास v2.2 या इससे कम है, तो आप बस [L] ध्वज के साथ अटक जाते हैं। इस मामले में, आपको URL पार्सिंग इंजन के बाद के पास पर नियमों के मिलान को रोकने के लिए RewriteCond बयानों पर भरोसा करना चाहिए। या फिर आपको यह सुनिश्चित करना होगा कि आपके रिवर्रिएट नियम के संदर्भ में हैं (यानी httpd.conf) जिसके कारण आपके अनुरोध को फिर से पार्स नहीं किया जाएगा।


3

एक और महान विशेषता फिर से लिखना-मानचित्र-विस्तार हैं। वे विशेष रूप से उपयोगी होते हैं यदि आपके पास होस्ट करने के लिए एक बड़े पैमाने पर एमाउट / फिर से लिखना है:

वे एक कुंजी-मूल्य-प्रतिस्थापन की तरह हैं:

RewriteMap examplemap txt:/path/to/file/map.txt

फिर आप अपने नियमों में मानचित्रण का उपयोग कर सकते हैं जैसे:

RewriteRule ^/ex/(.*) ${examplemap:$1}

इस विषय पर अधिक जानकारी यहां पाई जा सकती है:

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#mapfunc


इस सुविधा को अनदेखा करें यदि आप .htaccess-based rewrites का उपयोग कर रहे हैं । यह इस संदर्भ में काम नहीं करता है।
टेरी जे

2
RewriteMap निर्देश सर्वर संदर्भ (httpd.conf) में इस्तेमाल किया जाना चाहिए, लेकिन एक बार वहाँ परिभाषित, आप एक .htaccess फ़ाइल में RewriteRule के माध्यम से नक्शे का उपयोग कर सकते हैं।
JaredC

2

mod_rewrite URL में फेरबदल के बिना अनुरोध से निपटने के पहलुओं को संशोधित कर सकता है, जैसे पर्यावरण चर, कुकीज़ सेट करना आदि। यह अविश्वसनीय रूप से उपयोगी है।

सशर्त रूप से एक पर्यावरण चर सेट करें:

RewriteCond %{HTTP_COOKIE} myCookie=(a|b) [NC]
RewriteRule .* - [E=MY_ENV_VAR:%b]

लौटें एक 503 प्रतिक्रिया: RewriteRuleके [R]ध्वज एक गैर 3xx मान ले और एक गैर पुनः निर्देशित प्रतिक्रिया, जैसे कामयाब डाउनटाइम / रखरखाव के लिए लौट सकते हैं:

RewriteRule .* - [R=503,L]

503 प्रतिसाद देगा ( प्रति रीडायरेक्ट नहीं )।

इसके अलावा, mod_rewrite एक सुपर-पावर्ड इंटरफ़ेस की तरह mod_proxy को कार्य कर सकता है, इसलिए आप ProxyPassनिर्देश लिखने के बजाय ऐसा कर सकते हैं :

RewriteRule ^/(.*)$ balancer://cluster%{REQUEST_URI} [P,QSA,L]

राय: विभिन्न अनुप्रयोगों या लोड बैलेंसरों के लिए मार्ग अनुरोधों के लिए RewriteRuleएस और RewriteCondएस का उपयोग करना वस्तुतः अनुरोध के किसी भी बोधगम्य पहलू पर आधारित होता है। बैकएंड के लिए अपने रास्ते पर अनुरोधों को नियंत्रित करना, और वापस अपने रास्ते पर प्रतिक्रियाओं को संशोधित करने में सक्षम होना, mod_rewrite को सभी रूटिंग-संबंधित कॉन्फ़िगरेशन को केंद्रीकृत करने के लिए आदर्श स्थान बनाता है।

इसे सीखने के लिए समय निकालें, यह अच्छी तरह से लायक है! :)

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