[Php] अपाचे रीव्रेट राइल डायरेक्टिव्स में पर्यावरण चर की सेटिंग करते समय, क्या "REDIRECT_" के साथ चर नाम प्रांपित किया जा सकता है?


Answers

मैंने इसे बिल्कुल भी परीक्षण नहीं किया है और मुझे पता है कि यह अंक ए या बी को संबोधित नहीं करता है, लेकिन PHP दस्तावेज़ प्रलेखन में टिप्पणी में इस मुद्दे का कुछ विवरण है और $_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

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

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

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

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

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

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