mod_rewrite htaccess enmod mod-rewrite

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