2012-06-18 6 views
6

He una carpeta llamada "carpeta1" en mi directorio raízdirectorio mod reescribir si el archivo/carpeta no encontró

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

Necesito para redirigir todas las solicitudes a www.domain.com que resultan ser un error 404, a la carpeta1. De este modo:

www.domain.com/a_file.txt

Si a_file.txt no existe, busque en carpeta1:

www.domain.com/folder1/a_file. txt

Quiero que esto funcione de la misma para los subdirectorios, así:

www.domain.com/a_folder (si redirigir que no existe en la raíz)

www.domain.com/folder1/a_folder

Sé que debería utilizar RewriteCond% {} REQUEST_FILE! -f pero me parece que no puede resolverlo fuera.

Respuesta

15
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/folder1/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) folder1/$1 [L,R] 
  • La primera reescritura-cond asegura que no lo hace bucle (en caso de que el archivo no existe en el interior carpeta1 ya sea
  • El segundo comprueba que el destino no es un archivo
  • La tercera - que tampoco es una carpeta
  • Y, finalmente, reescriba la url. L marca significa que esta es la última regla aplicada (incluso si hay reglas después de ella), R significa redirigir. También puede agregar la bandera QSA si desea alguna query-string paramete rs pasó al original se enviará a la nueva url
+0

Exactamente estaba escribiendo ... +1 para evitar el bucle y explicaciones. – zessx

Cuestiones relacionadas