mod rewrite - htaccess - Detener la ejecución de Mod_Rewrite en la coincidencia RewriteCond
mod rewrite l (4)
Estoy ejecutando la versión gratuita de Helicon ISAPI Rewrite en IIS y tengo varios sitios que ejecutan el mismo conjunto de reglas de reescritura. Hasta ahora esto ha estado bien ya que todas las reglas se han aplicado a todos los sitios. Recientemente agregué un nuevo sitio que no quiero ejecutar a través de todas las reglas. ¿Hay alguna manera de hacer que las solicitudes a este sitio salgan del conjunto de reglas después de que se hayan ejecutado sus propias reglas?
He intentado lo siguiente sin suerte; todas las solicitudes a mysite.com dan como resultado un 404. Supongo que lo que estoy buscando es una regla que no hace nada y está marcada como la última regla para ejecutar [L].
## New site rule for mysite.com only
RewriteCond Host: (?:www/.)?mysite/.com
RewriteRule /content([/w/]*) /content.aspx?page=$1 [L]
## Break out of processing for all other requests to mysite.com
RewriteCond Host: (?:www/.)?mysite/.com
RewriteRule (.*) - [L]
## Rules for all other sites
RewriteRule ^/([^/./?]+)/?(/?.*)?$ /$1.aspx$2 [L]
...
Reescribirlo a sí mismo?
RewriteCond Host: (?:www/.)?mysite/.com
RewriteRule ^(.*)$ $1 [QSA,L]
No sé la sintaxis de reescritura de ISAPI, pero en IIRF , la regla de "salida" es así:
## Break out of processing for all other requests to mysite.com
RewriteCond %{SERVER_NAME} ^(?:www/.)?mysite/.com$
RewriteRule (.*) - [L]
o
## Break out of processing for all other requests to mysite.com
RewriteCond %{HTTP_HOST} ^(?:www/.)?mysite/.com$
RewriteRule (.*) - [L]
En cada caso, la regla dice "no reescribir (y no procesar más reglas)" y se aplica cuando el nombre de host utilizado es mysite.com o www.misitio.com. El indicador [L] es la parte que dice "no procesar más reglas" y el reemplazo es la parte que dice "no reescribir".
He hecho algo similar para detener mod_rewrite en una carpeta WebDAV:
# stop processing if we''re in the webdav folder
RewriteCond %{REQUEST_URI} ^/webdav [NC]
RewriteRule .* - [L]
Eso debería funcionar para tus propósitos también. Si no es así o si está interesado en referencias adicionales, consulte esta pregunta anterior: ¿Cómo ignoro un directorio en mod_rewrite?
RewriteRule ^ - [END]
-
.
sería incorrecto, ya que requiere al menos 1 char -
.*
podría ser menos eficiente en mi humilde opinión - L es peor que END, ya que permite rondas adicionales, también en redirecciones internas. Solo END realmente se detiene. → Detalles