2012-01-07 12 views
7

Desidero visualizzare un messaggio 404 (Non trovato) quando l'utente tenta di accedere alla directory non autorizzata. Non voglio usare le pagine Proibite. Ho provato con il codice seguente, ma non funziona..htaccess per reindirizzare il messaggio 404 (non trovato) sull'accesso non autorizzato alla cartella

RedirectMatch 404 ^/htaccess/.*$ 

Qualche idea su cosa potrebbe andare storto?

+0

Perché non si desidera utilizzare le pagine vietate? – Dan

+0

@Dan Penso di rendere invisibile la directory. – rekire

+0

@rekire ya u r corretto. posso rendere ogni cartella invincibile usando RedirectMatch 404/ma devo inserire htaccess in ogni cartella. un modo per influire su tutte le directory figlio? – Leon

risposta

11

prova ad aggiungere quanto segue al file .htaccess

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

Modifica

esempio sistema/funzione, sistema/classe, ...

Se si dispone di un molte cartelle utilizzano quindi un RewriteCond come segue poiché è più facile da leggere rispetto a più cartelle in un singolo RewriteRule o più RewriteRules, che duplicare il pezzo 404

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

ho ottenuto un intero ramo della cartella, ad esempio sistema/funzione, sistema/classe, se l'utente tenta di accedere a questa cartella da uri, basta mostrare loro la pagina 404. faccio nid per scrivere un htaccess in ogni cartella? – Leon

+0

@Leon vedi modifica sopra –

+0

Questa è una soluzione veramente bella +1 – rekire

0

R = 404 non è un valore R valido, deve essere compresa nell'intervallo 300-399 o sarà ignorato. È meglio semplicemente reindirizzare a un URL non esistente che non è bloccato da altre regole, ciò attiverà il tuo errordocument.

Problemi correlati