[Php] Apache RewriteRule निर्देशों में पर्यावरण चर सेट करते समय, "REDIRECT_" के साथ चर नाम को उपसर्ग क्यों किया जाता है?



Answers

मैंने इसका बिल्कुल परीक्षण नहीं किया है और मुझे पता है कि यह अंक ए या बी को संबोधित नहीं करता है, लेकिन PHP दस्तावेज़ में टिप्पणियों में इस मुद्दे का कुछ विवरण है और $_SERVER['VAR'] का उपयोग करके इन चरों तक पहुंचने के लिए कुछ संभावित समाधान हैं $_SERVER['VAR'] :

http://www.php.net/manual/en/reserved.variables.php#79811

संपादित करें - प्रस्तावित प्रश्न के कुछ और प्रतिक्रियाएं:

ए: यदि वे रीडायरेक्ट में शामिल हैं तो पर्यावरण चर का नाम अपाचे द्वारा बदला जाता है। उदाहरण के लिए, यदि आपके पास निम्न नियम है:

RewriteRule ^index.php - [E=VAR1:'hello',E=VAR2:'world']

फिर आप $_SERVER['VAR2'] और $_SERVER['VAR2'] का उपयोग कर VAR1 और VAR2 तक पहुंच सकते हैं। हालांकि, अगर आप इस तरह के पेज को रीडायरेक्ट करते हैं:

RewriteRule ^index.php index2.php [E=VAR1:'hello',E=VAR2:'world']

फिर आपको $_SERVER['REDIRECT_VAR1'] आदि का उपयोग करना होगा।

बी: इस समस्या को दूर करने का सबसे अच्छा तरीका PHP का उपयोग करने में रुचि रखने वाले चर को संसाधित करना है। एक ऐसा फ़ंक्शन बनाएं जो $_SERVER सरणी के माध्यम से चलता है और आपको आवश्यक वस्तुओं को पाता है। आप इस तरह के एक समारोह का भी उपयोग कर सकते हैं:

function myGetEnv($key) {
    $prefix = "REDIRECT_";
    if(array_key_exists($key, $_SERVER))
        return $_SERVER[$key];
    foreach($_SERVER as $k=>$v) {
        if(substr($k, 0, strlen($prefix)) == $prefix) {
            if(substr($k, -(strlen($key))) == $key)
                return $v;
        }
    }
    return null;
}
Question

मैं एक .htaccess फ़ाइल में RewriteRule नियमों पर [E=VAR:VAL] ध्वज के साथ अपाचे पर्यावरण चर (PHP में उपयोग के लिए) सेट करने का प्रयास कर रहा हूं।

मुझे पहले ही पता चला है कि PHP में चर का उपयोग सर्वर चर के रूप में $_ENV बजाय $_SERVER (जो निश्चित मात्रा में समझता है)। हालांकि, मेरी समस्या कुछ नियमों के लिए है [E=VAR:VAL] ध्वज अपेक्षित के रूप में काम करता है और मैं एक परिवर्तनीय $_SERVER['VAR'] साथ समाप्त होता हूं लेकिन अन्य नियमों के लिए मैं एक परिवर्तनीय $_SERVER['REDIRECT_VAR'] साथ समाप्त होता हूं। या $_SERVER['REDIRECT_REDIRECT_VAR'] , आदि

ए। अपरैच में पर्यावरण परिवर्तन चर का कारण बनता है [E=VAR:VAL] ध्वज का उपयोग करके "REDIRECT_" को परिवर्तनीय नाम से प्रीपेड किया गया है?

बी। मैं यह सुनिश्चित करने के लिए क्या कर सकता हूं कि मैं एक अपरिवर्तित नाम के साथ एक पर्यावरण वैरिएबल के साथ समाप्त हो जाऊं ताकि मैं इसे PHP में $_SERVER['VAR'] रूप में एक्सेस कर $_SERVER['VAR'] , जिसमें वेरिएबल नाम की विविधताओं की जांच करने का प्रयास किया जा सके "RedIRECT_" के अधिक उदाहरण इसके लिए तैयार किए गए हैं?

आंशिक समाधान मिला । पुनः लिखने के नियमों की शुरुआत में निम्नलिखित को जोड़ने से मूल एनएनवी पुन: प्रयास होता है: प्रत्येक रीडायरेक्ट पर VAR (साथ ही साथ REDIRECT_VAR संस्करण छोड़कर) यदि आवश्यक हो तो:

RewriteCond %{ENV:REDIRECT_VAR} !^$
RewriteRule .* - [E=VAR:%{ENV:REDIRECT_VAR}]





Links