2012-06-18 9 views
6

ho una cartella denominata "folder1" nella mia directory principaledirectory mod rewrite se il file/cartella non trovato

www.domain.com/ www.domain.com/folder1

ho bisogno per reindirizzare tutte le richieste a www.domain.com che risultano essere un errore 404, a folder1. In questo modo:

www.domain.com/a_file.txt

Se a_file.txt non esiste, guarda in folder1:

www.domain.com/folder1/a_file. txt

voglio questo lavoro lo stesso per le sottodirectory, in questo modo:

www.domain.com/a_folder (reindirizzamento se non esiste nella radice)

www.domain.com/folder1/a_folder

So che dovrei usare RewriteCond% {REQUEST_FILE}! -f, ma io non riesco a capire su.

risposta

15
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/folder1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) folder1/$1 [L,R] 
  • La prima riscrittura cond assicura non lo fai loop (nel caso in cui il file non esiste all'interno cartella1 sia
  • La seconda verifica che di destinazione non è un file
  • Il terzo - che non è una cartella
  • E, infine, riscrivi l'url. L flag indica che questa è l'ultima regola applicata (anche se ci sono delle regole dopo), R significa reindirizzamento. Puoi anche aggiungere QSA flag se vuoi parametro stringa di query rs passato all'originale essere inviato al nuovo URL
+0

Esattamente stavo scrivendo ... +1 per il ciclo di evitare e spiegazioni. – zessx