Tengo la siguiente URL de reescritura:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]
Ahora quiero agregar una excepción, que si la URL es algo como mysite.com/abc debería ignorarla y todas las cosas dentro de ella también. mysite.com/abc/dfgs también debe ser excluido de esta reescritura.
¿Cómo puedo lograr esto?
Respuestas
2 para la respuesta № 1Si / abc es un directorio existente, puede poner otro archivo .htaccess allí con
RewriteEngine Off
Si es realmente solo una cadena que no desea volver a escribir (exista o no)
RewriteCond %{REQUEST_URI} !^/abc
no se reescribirá si la ruta solicitada comienza con "/ abc"
Para probar las reglas de reescritura sin desordenar el sitiopara los navegadores normales (no es que debas estar editando en un entorno en vivo, por supuesto, esto es puramente hipotético :-)), he encontrado lo siguiente muy útil:
RewriteCond %{REMOTE_ADDR} 12.34.56.78 # <-- where that"s your IP address
0 para la respuesta № 2
Esto debería evitar volver a escribir si el URI contiene abc. Esto puede o no ser exactamente lo que quieres. Si no es t edita tu pregunta.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Rewrite ONLY if the REQUEST does NOT contain abc
RewriteCond %{REQUEST_URI} !abc
# Rewrite all other URLs
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]