2014-09-21 8 views
6

पर अन्य सभी चीज़ों को रूट करें। मैं .htaccess फ़ाइल का उपयोग करना चाहता हूं यह जांचने के लिए कि अनुरोधित पथ public/ निर्देशिका में फ़ाइल है या नहीं। यदि हां, तो इसकी सेवा करें, अन्यथा /index.php पर अनुरोध अग्रेषित करें। मुझे यह काम करने के लिए प्रतीत नहीं होता है।.htaccess: स्थिर फाइलों की सेवा करें, index.php

यहाँ मैं क्या मिल गया है:

Options +FollowSymLinks 
RewriteEngine on 

Options -Indexes 

RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f 
RewriteRule^%{DOCUMENT_ROOT}/public%{REQUEST_URI} [L] 

RewriteRule^index.php [QSA,L] 

उदा http://example.com/css/style.css में अपाचे /public/css/style.css की सेवा करनी चाहिए क्योंकि यह एक फ़ाइल है जो मौजूद है, लेकिन http://example.com/css/style.bad/index.php पर भेजी जानी चाहिए।

उत्तर

1

स्पष्ट रूप से [L] does not work as I expected

RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f 
RewriteRule^public%{REQUEST_URI} [L] 

RewriteCond %{REQUEST_URI} !^/public/ 
RewriteRule^index.php [QSA,L] 
6

इस कोड को काम करना चाहिए अपनी तरफ

Options +FollowSymLinks -MultiViews -Indexes 

RewriteEngine On 
RewriteBase/

RewriteCond %{DOCUMENT_ROOT}/public/$1 -f 
RewriteRule ^(.*)$ public/$1 [L] 

RewriteCond %{THE_REQUEST} \s/public/ [NC,OR] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L,QSA] 
+0

काम करता है उस पर अपेक्षा के अनुरूप: मन में है कि, और परीक्षण और त्रुटि के एक बहुत के साथ, मैं कुछ है कि काम करता है में कामयाब रहे! धन्यवाद। मैंने अभी देखा है कि 'style.css' * */css/style.css' * और *'/public/css/style.css' पर उपलब्ध है। तकनीकी रूप से उत्तरार्द्ध को 'index.php' तक रूट करना चाहिए क्योंकि '/ public/public/css.style.css' एक फ़ाइल नहीं है। इसका अर्थ यह भी है कि '/ public/xxx' मेरे' index.php' फ़ाइल में कॉन्फ़िगर किए गए कस्टम के बजाय अपाचे 404 फेंक देगा। इसे ठीक करने का कोई तरीका नहीं है, है ना? – mpen

+1

मैंने आपकी टिप्पणी को –

+1

पर विचार करने के लिए अपना उत्तर संपादित किया है आपका जादू मेरे प्यारे हैं। तुमने मुझे बचाया। बहुत बहुत धन्यवाद –

संबंधित मुद्दे