2011-09-07 16 views
8

2h दिनों में खोज रहा है और इस परियोजना पर mod_rewrite और समय की बाधाओं की समझ की कमी के कारण सही समाधान नहीं मिल सकता है, इसलिए उम्मीद है कि कोई मदद कर सकता है।। उपनिर्देशिका 'ओवरराइडिंग' पेरेंट एचटीएसीएसी

उद्देश्य

जड़ index.php के लिए सभी अनुरोधों को फिर से लिखने के लिए अगर ग्राहक सही कुकी नहीं है। यदि ग्राहक के पास सही कुकी है तो उन्हें ब्राउज़ करने की अनुमति दें।

समस्या

मेरी उपनिर्देशिका में इनको मेरी जड़ इनको अधिक precendence ले जा रहा है, इसलिए इस तरह के www.mydomain.com/subdir/index.php रीडायरेक्ट किया जा रहा arn't के रूप में अनुरोध।

मेरे जड़ .htaccess

Options FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !^.*pass.*$ 
RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?url=$0 [NC] 

मेरे subdir इनको

RewriteEngine On 
RewriteBase/
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

अतिरिक्त जानकारी

आदर्श रूप में मैं एक पासवर्ड संरक्षित क्षेत्र बनाने के लिए कोशिश कर रहा हूँ, इसलिए सभी अनुरोध index.php पर रूट किए जाते हैं एक पासवर्ड दर्ज किया जा सकता है और जब एक कुकी सत्यापित की जाती है, तो सामग्री और उप निर्देशिकाओं की मुफ्त ब्राउज़िंग की अनुमति मिलती है। तो अगर इसे पूरा करने का एक बेहतर तरीका है तो कृपया मुझे बताएं, और मैं htpasswd के लिए नहीं गया क्योंकि मुझे कस्टम लॉगिन, त्रुटि और स्पलैश पृष्ठों की आवश्यकता है।

इसके अलावा, subdir .htaccess एक अभिव्यक्तिइंजिन यूआरएल हैंडलर है।

धन्यवाद।

+0

आप इसे ठीक, एक कुकी की उपस्थिति के लिए जाँच की परवाह किए बिना अच्छा नहीं है सुरक्षा। यह नकली एक के लिए तुच्छ है, और चूंकि आप कुकी में डेटा को मान्य नहीं कर रहे हैं, बस इसकी उपस्थिति की जांच कर रहे हैं), आपकी "सुरक्षा" प्रणाली बाईपास करने के लिए तुच्छ है। –

+0

@ एबे सिर्फ एक सुझाव है लेकिन आपने HTTP प्रमाणीकरण को लागू करने के बारे में सोचा है, अगर आप केवल निर्देशिकाओं तक पहुंच की अनुमति दे रहे हैं: http://uk.php.net/manual/en/features.http-auth.php –

उत्तर

18

अभिभावक .htaccess (पैरेंट फ़ोल्डर से htaccess) से पुनः लिखने के नियमों को निष्पादित करने की अनुमति देने के लिए, आपको स्पष्ट रूप से इसे अनुमति देने की आवश्यकता है (अपाचे वर्तमान में hhaccess को फिर से लिखने के नियमों का इलाज करेगा, जिसे केवल निष्पादित करने की आवश्यकता है, पुनः लिखा यूआरएल एक ही उपफोल्डर में रहता है)।

RewriteOptions inherit 

अपाचे मैनुअल:

आप उप-फ़ोल्डर में अपनी .htaccess को यह लाइन जोड़ने की जरूरत है http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions