2015-08-11 5 views
10

कस्टम (कुछ हद तक अजीब) htaccess फ़ोल्डर मैपिंग का उपयोग करते समय मुझे कोडलाइनर के साथ कोई समस्या है। हालांकि, यह तकनीकी रूप से काम करना चाहिए, लेकिन यह नहीं है। क्या कोई मेरी मदत कर सकता है?वैध मार्गों पर कोडिनेटर 404


परिदृश्य 1 (वर्क्स ललित):

फ़ोल्डर संरचना और महत्वपूर्ण फाइलों को

/ is the website root 
/.htaccess 
/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess> 

/.htaccess:

RewriteEngine On 
RewriteRule ^api/(.*)$ /api/$1 [L] 

तक पहुँचने mydomain.com/api/ व्यवस्थापक/उदाहरण के लिए मुझे मेरे व्यवस्थापक-नियंत्रक/अनुक्रमणिका कार्रवाई में ले जाता है और वें लोड करता है ई ठीक है।

$ _REQUEST शो के लिए index.php पर var_dump

array (size=1) 
'admin/' => string '' (length=0) 

परिदृश्य 2 (काम नहीं करता):

फ़ोल्डर संरचना और महत्वपूर्ण फाइलों को

/.htaccess 
/current/.htaccess 
/current/api/ <this is the CodeIgniter Root, with index.php and default CI .htaccess, this is the same folder/files/htaccess as above scenario> 

/.htaccess:

RewriteEngine On 
RewriteRule ^(.*)$ /current/$1 [L] 

/current/.htaccess:

RewriteEngine On 
RewriteRule ^api/(.*)$ /api/$1 [L] 

उदाहरण के लिए mydomain.com/api/admin/ तक पहुँचने मुझे Codeigniter 404 पृष्ठ/दृश्य पर हो जाता है।

$ _REQUEST शो (परिदृश्य 1 के रूप में एक ही)

array (size=1) 
'admin/' => string '' (length=0) 

क्या यहाँ जा रहा है के लिए index.php पर var_dump? मुझे पता है कि htaccess rewrites अजीब हैं, लेकिन जहां तक ​​Codeigniter देखता है, मार्ग एक ही है (व्यवस्थापक /)। लेकिन वे दोनों अलग-अलग व्यवहार करते हैं। क्यूं कर? मैंने जिस चीज को मैं सोच सकता था, मैंने कोशिश की, जहां तक ​​मैं देख सकता हूं, कोडिग्निटर सही ऑब्जेक्ट को सही ऑब्जेक्ट देखता है, लेकिन सीआई राउटर किसी भी तरह से इसका सही ढंग से उपयोग नहीं करता है।

किसी भी मदद की सराहना की, मुझे बताएं कि क्या आप कुछ भी सोच सकते हैं, मैं इसे और डीबग करने में मदद करने के लिए कोशिश कर सकता हूं।

नोट: कारण मैं डबल एचटीएसीएसी का उपयोग कर रहा हूं ताकि मैं समय/परिदृश्य के आधार पर सीआई के विभिन्न उदाहरण निर्धारित कर सकूं (आप "वर्तमान" फ़ोल्डर के बजाय अलग-अलग फ़ोल्डर की सेवा के लिए पुनः लिखने की स्थिति का उपयोग कर सकते हैं)। मैं वर्तमान में इसका उपयोग नहीं कर रहा हूं, इसलिए परिदृश्य 2 में, रूट में केवल एक "वर्तमान" फ़ोल्डर है।

+0

कोशिश इस 'RewriteRule^एपीआई /(.*)$ /api/index.php/$1 [एल]' –

+0

क्या एपीआई फ़ोल्डर के भीतर किसी भी संपत्ति फ़ाइलों के बारे में? कोडिनेटर के साथ इसकी सामान्य बात है, एपीआई/संपत्ति/mylogo.jpg के बारे में क्या? इसके लिए कोई भी अनुरोध कोडइग्निटर php फ़ाइलों में जाएगा और 404 के रूप में आएगा। क्या मैं गलत हूं? – decay

+0

बस स्पष्ट करने के लिए, एपीआई फ़ोल्डर में एक एचटीएसीएएस फ़ाइल भी शामिल है, सामान्य सीआई एचटीएसीएएस फ़ाइल: http://pastebin.com/aHM9cjtr प्रश्न – decay

उत्तर

0

आप अनुरोधों को एक फ़ोल्डर में रीडायरेक्ट कर रहे हैं, जबकि वास्तव में आपको कोडइग्निटर की index.php फ़ाइल में रीडायरेक्ट करना चाहिए।

ई।छ:

RewriteRule ^api/(.*)$ /api/index.php?/$1 [L] 

आप, 'index_page' अपने कॉन्फ़िग फ़ाइल में रिक्त स्ट्रिंग पर सेट है यह index.php है, तो जब कुछ का अनुरोध आप यूआरएल में index.php सहित जाना चाहिए सेट है यह सोचते है कि।

+0

एपीआई फ़ोल्डर के भीतर किसी भी संपत्ति फाइल के बारे में क्या? कोडिनेटर के साथ इसकी सामान्य बात है, एपीआई/संपत्ति/mylogo.jpg के बारे में क्या? इसके लिए कोई भी अनुरोध कोडइग्निटर php फ़ाइलों में जाएगा और 404 के रूप में आएगा। क्या मैं गलत हूं? – decay

+0

बस स्पष्ट करने के लिए, एपीआई फ़ोल्डर में एक एचटीएसीएएस फ़ाइल भी शामिल है, सामान्य सीआई एचटीएसीएएस फ़ाइल: http://pastebin.com/aHM9cjtr जैसा कि – decay

+0

पर उल्लिखित है, आपने इसे पहले ही परिभाषित कर दिया है! -f &! -d जिसका मतलब है , अगर कोई फ़ाइल नहीं है या कोई निर्देशिका नहीं है तो यह codeigniter की index.php फ़ाइल के माध्यम से जाएगी। जिसका अर्थ है कि आप अपनी संपत्ति को सामान्य तरीके से अनुरोध करने में सक्षम होना चाहिए। – ahmad

1

कोडइग्निटर पर यूआरआई से index.php को हटाने से दर्द हो सकता है। पिछले हफ्ते मैं एक इसी तरह के मामले को गुजर रही थीं: मैं /var/www/html में मेरी जड़ वेब निर्देशिका है और अंदर /ci अपने प्रोजेक्ट ... इसलिए /ci अंदर मैं निम्नलिखित .htaccess है:

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L,QSA] 

और apache2 कॉन्फ़िग फ़ाइल मैं में निम्नलिखित इससे जोड़ा गया:

<Directory /var/www/html/ci/> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Require all granted 
</Directory> 

यह भी जांच कि application/config/config.php में तुम हो:

आशा है कि मदद करता है ...