2012-03-29 17 views
17

Moim głównym katalogu public_html ma następujące .htaccess zasady:Jak zatrzymać podkatalogu dziedziczy zasady .htaccess rodzica

Options +FollowSymLinks 
IndexIgnore */* 
<IfModule mod_rewrite.c> 
RewriteEngine on 

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# otherwise forward it to index.php 
RewriteRule . index.php 
</IfModule> 

Problem w tym, że wtedy mieć podkatalog o nazwie source, i chcę tego katalogu tylko lista pliki w nim (ponieważ nie ma pliku indeksu). Problem polega na tym, że powyższe reguły htaccess w katalogu nadrzędnym powodują, że żadne pliki źródłowe nie są wyświetlane w indeksie katalogu (po prostu lista pustych indeksów).

Jak mogę to rozwiązać?

DZIĘKI

Odpowiedz

19

Zmień .htaccess z tym:

Options +FollowSymLinks 
<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/

# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# if request is not for the /sub-dir/ 
RewriteCond %{REQUEST_URI} !^/sub-dir/ [NC] 
# otherwise forward it to index.php 
RewriteRule . index.php 
</IfModule> 
+1

Dziękuję, to działało idealnie! – user1280853

+1

jakie rozwiązanie uratowałeś mój dzień. – Naeem

3

Może to być oczywiste i już próbowałem go - ale czy stworzony plik .htaccess w podfolderze interesów? Wszelkie ustawienia w tym pliku zastąpią równoważne ustawienia w folderze głównym.

UPDATE:

Do pliku .htaccess korzeń zamiast IndexIgnore */* ... spróbuj Options -Indexes

Następnie w pliku .htaccess podfolder, w miejsce tej jednej linii: Options +Indexes

Czy to osiąga pożądany efekt?

+0

Tak mam, ale nie wiem jakie ustawienia użyć, aby zastąpić ustawienia z pliku .htaccess rodzic. – user1280853

+0

Zaktualizowałem odpowiedź za pomocą możliwego rozwiązania, które może działać w twoim scenariuszu. –

+0

proste, szybkie i niezawodne rozwiązanie !! Zdecydowanie jesteś ratunkiem życia. –

Powiązane problemy