मुझे संदेह है कि आप अपने कोडइग्निटर अनुरोधों को संभालने के लिए PATH_INFO
का उपयोग कर रहे हैं।
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ index.php/$0 [L]
जब mod_rewrite
अपने यूआरएल का परीक्षण करती है, वे पहले से ही, उनके प्राकृतिक चरित्र प्रारूप करने के लिए डीकोड किया गया है, इसलिए इस मामले %25
में सिर्फ %
बन गया है: नतीजतन, आपके .htaccess
का एक नियम सेट है कि इस के समान दिखता है शामिल हैं। जब आप इस नियम को लागू करते हैं, तो बैकरेफर में वास्तव में शाब्दिक पाठ somepath/morestuff/ohno%foobar
होता है, जो डिफ़ॉल्ट रूप से पुनः-एन्कोड नहीं होता है। अपाचे को पता नहीं है कि %
आपके अनुरोध पथ में /index.php/somepath/morestuff/ohno%foobar
और चुक्स के साथ कर रहा है, जिससे आपको यह त्रुटि मिलती है।
यदि आप अपाचे 2.2, mod_rewrite
चला रहे हैं, तो इस उद्देश्य के लिए B
ध्वज जोड़ा गया है, जिससे आप अपने यूआरएल पर पुनः लिखे गए बैकरेफर से बच सकते हैं। अपने वर्तमान झंडा सूची में जोड़कर उस मामले में इस समस्या को ठीक करना चाहिए:
RewriteRule ^.*$ index.php/$0 [B,L]
वहाँ भी है एक escape
RewriteMap
कि mod_rewrite
के पिछले अपाचे के संस्करणों में एक आंतरिक नक्शे के रूप में उपलब्ध है, लेकिन दुर्भाग्य से इस नक्शे में सक्षम होना चाहिए सर्वर या वर्चुअल सर्वर कॉन्फ़िगरेशन स्तर, इसलिए यदि आप साझा होस्टिंग पर अपनी साइट चला रहे हैं तो हो सकता है। यह वही बात करता है, हालांकि थोड़ा और जानबूझकर।
अपने सर्वर/आभासी सर्वर विन्यास में:
RewriteMap escape int:escape
फिर, जहाँ भी आप अपने नियमों को परिभाषित:
RewriteRule ^.*$ index.php/${escape:$0} [L]
ध्यान रखें कि CodeIgniter PATH_INFO
उपयोग करने के लिए अनुरोध प्राप्त करने की आवश्यकता नहीं है जानकारी, और REQUEST_URI
का उपयोग करके यहां पूरी तरह से स्वीकार्य है यदि आप mod_rewrite
का उपयोग किसी भी अन्य रूपांतरण करने के लिए नहीं कर रहे हैं (और इस सिरदर्द को पूरी तरह से टालना होगा)। मुझे लगता है कि डिफ़ॉल्ट रूप से कोडइग्निटर AUTO
से अनुरोध प्राप्त करने के लिए सेट है (मान लीजिए कि मुझे अपने ढांचे को मिश्रित नहीं किया गया है), इसलिए बस उस जानकारी को बनाने के लिए यूआरएल के अनुरोध को फिर से लिखना पर्याप्त नहीं होगा।
क्या कोई कारण है कि आपको '25% की आवश्यकता है? '% 25''% 'चिह्न के लिए कोड है। – Powerlord
@ बेमरोस, यह वास्तव में एक एपीआई के लिए है जहां लोग कोई स्ट्रिंग पोस्ट कर सकते हैं। –