2011-12-30 9 views
45

Ostatnio sprzątałem mój projekt. Mam główny .htaccess w katalogu głównym i 6 innych. 5 z nich uruchomiło Options -Indexes, ale nie widziałem anypointu pozwalającego na przeglądanie katalogu tak przeniesione do głównego. więc teraz mam tylko 2 pliki .htaccess. główny i jeden w /system który posiadahtaccess <Directory> odmowa ze wszystkich

# Block External Access 
deny from all 

więc chciałem uruchomić, że na /system tylko z poziomu głównego. Więc usunąłem ten w/system i dodałem do mojego głównego pliku .htaccess pozostawiając 1!

ale teraz mogę dostać

Internal Server Error

Serwer napotkał błąd wewnętrzny lub błędną i był stanie wykonać żądania.

Skontaktuj się z administratorem serwera, webmasterem @ localhost i , informując ich o czasie wystąpienia błędu oraz o wszystkim, co mógłbyś zrobić, co mogło spowodować błąd.

Więcej informacji o tym błędzie może być dostępnych w dzienniku błędu serwera . Serwer

Apache/2.2.17 (Ubuntu) w 10.0.1.5 port 80

celem jest blokowanie odczytu plików w/system i to sub katalogu tych, ale umożliwiają oglądanie wszystkiego z jednego .htaccess plik dla całego projektu. Jakieś pomysły, jak mogę to naprawić? Zrobiłem kilka wyszukiwań w Google, ale naprawdę nie mogłem znaleźć nic.

Odpowiedz

74

Nie można użyć Directory directive w pliku .htaccess. Jeśli jednak utworzyć plik .htaccess w katalogu/system i umieść w nim następujące, dostaniesz ten sam rezultat

#place this in /system/.htaccess as you had before 
deny from all 
+3

Tak. Przedtem miałem .htaccess umieszczony w/system. Próbowałem mieć tylko jeden na cały projekt. Chyba nie mogę i będę musiał to robić w ten sposób. – Keverw

+0

dla użytkowników systemu Windows, upewnij się, że nazwa pliku jest dokładnie '.htaccess' przez save - jako plik z edytora tekstu, ponieważ Eksplorator Windows nie pozwala na usunięcie nazw plików. to był dla mnie problem –

1

Można używać z katalogu:

RewriteEngine On 
RewriteRule ^(?:system)\b.* /403.html 

Lub:

RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden'); 
9

Możesz również użyć polecenia RedirectMatch, aby odmówić dostępu do folderu.

odmówić dostępu do folderu, można użyć następującego RedirectMatch w htaccess:

RedirectMatch 403 ^/folder/?$ 

Będzie zabronić dostępu do zewnętrznego/folderu/np: http://example.com/folder/ zwróci 403. błędu.

Aby zablokować dostęp do wszystkiego w folderze, można użyć to:

RedirectMatch 403 ^/folder/.*$ 

To będzie blokować dostęp do całego katalogu, np: http://example.com/folder/anyURI zwróci odpowiedź 403 błędu do klienta.

Powiązane problemy