मैं मॉड-रीराइट के साथ प्रयोग कर रहा था। मैंने सोचा कि मैं जो चाहता था वह सरल था लेकिन मुझे अनुरोध की गई फ़ाइल की यूआरआई REQUEST_URI के माध्यम से नहीं मिली है। इसके बजाय व्युत्पन्न नाम पारित किया गया है।mod-rewrite THE_REQUEST और (REQUEST_URI या REQUEST_FILE) अलग-अलग फ़ाइल नाम दें - क्यों?
manual का कहना है:
THE_REQUEST
पूर्ण HTTP अनुरोध लाइन सर्वर को ब्राउज़र द्वारा भेजा गया (जैसे, "प्राप्त /index.html HTTP/1.1")। इसमें ब्राउज़र द्वारा भेजे गए कोई अतिरिक्त शीर्षलेख शामिल नहीं हैं। यह मान (डीकोडेड) से अनदेखा नहीं हुआ है, नीचे अन्यके विपरीत अन्य संस्करणों के विपरीत।
REQUEST_URI
संसाधन HTTP अनुरोध लाइन में का अनुरोध किया। (ऊपर उदाहरण में, यह "/index.html" होगा।)
हालांकि दो मेरी परीक्षणों में अलग फ़ाइल नाम दे। मेरे पास bootstrap.php है जिसके माध्यम से मैं सभी अनुरोध भेजना चाहता हूं। यह परीक्षण फ़ाइल है: .htaccess फ़ाइल पर
<?php
echo $_GET['requestedURI'];
?>
मेरे पास है:
### REWRITE RULES ###
RewriteEngine on
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .+ bootstrap.php?requestedURI=%{REQUEST_URI} [L]
का निवेदन http://localhost/test.htm
डालता है: /bootstrap.php
अगर मैं बजाय THE_REQUEST डाल REQUEST_URI की .htaccess में मुझे मिलता है /test.htm HTTP/1.1
तो क्यों THE_REQUEST के लिए व्यवस्थित नहीं है? खैर, जैसे ही एक क्वेरी स्ट्रिंग चीजें तोड़ती हैं। अगर मैं अनुरोध करता हूं: http://localhost/test.htm?x=1&y=2
मुझे मिलता है /test.htm?x=1 पहला एम्पर्सेंड चीजें तोड़ता है। मुझे लगता है कि क्वेरीस्ट्रिंग में सभी एम्पर्सेंड को% 26 के साथ प्रतिस्थापित करना संभव है ताकि यह काम करे लेकिन मैंने अब तक प्रबंधन नहीं किया ...
तो क्या कोई बता सकता है कि क्यों REQUEST_URI विफल रहता है और इसे कैसे ठीक किया जाए या कैसे क्वेरी स्ट्रिंग में एम्पर्सेंड को% 26 पर फिर से लिखें?
धन्यवाद।
संपादित करें: उपर्युक्त रिपोर्ट Win 7 पर xampp 1.7.3 पर लागू होती है। मैंने इस दौरान एक उत्पादन लिनक्स सिस्टम पर कोशिश की और REQUEST_URI इसे वापस लौटाता है।
धन्यवाद, यह एक अच्छा मुद्दा है। मैं ऐसा लगता है कि चीजें अतिसंवेदनशील थीं। फिर भी यह मजाकिया है कि दो सर्वर (जीत/लिनक्स - अगर इसका इसके साथ कुछ लेना है) .htaccess –
@CO में REQUEST_URI पर अलग-अलग व्यवहार करेंगे: * अनुरोध \ _URI * mod_rewrite में हमेशा मूल रूप से अनुरोध किया गया यूआरआई नहीं है लेकिन कर सकता है आपके मामले में पहले से ही एक लिखा होगा जहां ['एल' फ्लैग] (http://httpd.apache.org/docs/current/rewrite/flags.html#flag_l) एक आंतरिक रीडायरेक्ट का कारण बनता है। – Gumbo