2012-01-07 13 views
7

Chcę wyświetlić komunikat 404 (Nie znaleziono), gdy użytkownik próbuje uzyskać dostęp do nieautoryzowanego katalogu. Nie chcę używać zabronionych stron. Próbowałem z poniższym kodem, ale to nie działa..htaccess, aby przekierować do 404 (Nie znaleziono) wiadomość na nieautoryzowanym dostępie do folderu

RedirectMatch 404 ^/htaccess/.*$ 

Czy masz pojęcie, co może być nie tak?

+0

Dlaczego nie chcesz używać niedozwolonych stron? – Dan

+0

@Dan Myślę, aby katalog był niewidoczny. – rekire

+0

@rekire ya u r correct. mogę uczynić każdy folder niezwyciężonym za pomocą RedirectMatch 404/ale muszę umieścić htaccess w każdym folderze. jakikolwiek sposób wpłynąć na wszystkie katalogi podrzędne? – Leon

Odpowiedz

11

spróbuj dodać następujące do pliku .htaccess

#if the URI starts with htaccess, return a 404 
RewriteRule ^htaccess/ - [R=404,L,NC] 

Edycja

np Układ/funkcja, system/klasa ...

Jeśli masz wiele folderów następnie używa RewriteCond jak poniżej, ponieważ jest łatwiejszy do odczytania niż wiele folderów w jednym RewriteRule lub wielu RewriteRules, powielający 404 kawałek

RewriteCond %{REQUEST_URI} ^htaccess/ [NC,OR] 
RewriteCond %{REQUEST_URI} ^system/function/ [NC,OR] 
#just make sure the last rule does NOT have an OR 
RewriteCond %{REQUEST_URI} ^system/class/ [NC] 
RewriteRule . - [R=404,L,NC] 
+0

Mam całą gałąź folderu, na przykład system/funkcja, system/klasa, jeśli użytkownik próbuje uzyskać dostęp do tego folderu przez uri, po prostu pokaż mu stronę 404. czy mogę napisać htaccess w każdym folderze? – Leon

+0

@Leon patrz edycja powyżej –

+0

To jest naprawdę fajne rozwiązanie +1 – rekire

0

R = 404 nie jest poprawna wartość R, musi zawierać się w przedziale 300-399 i są ignorowane. Lepiej jest po prostu przekierować do nieistniejącego adresu URL, który nie jest blokowany przez inne reguły, to wywoła twój errordocument.

Powiązane problemy