Buscar..


Observaciones

Este tema describe los dos contextos en los que se puede utilizar RewriteRule . En los ejemplos que omiten RewriteEngine on , se asume que esta directiva ha ocurrido antes de ese ejemplo.

Reescribir reglas en contexto de directorio

El contexto por directorio es una parte del archivo de configuración estática entre las etiquetas <Directory> y </Directory> . Todo el contenido de los archivos de configuración dinámica está dentro del contexto de directorio de la carpeta en la que reside el archivo .htaccess.

RewriteRule de RewriteRule en el contexto del directorio con la parte de una url después del protocolo, nombre de host, puerto y prefijo del directorio en el que residen, y antes de la cadena de consulta.

En el archivo de configuración estática.

Cuando se usa la siguiente regla en la url http://example.com/foo?id=1 , la expresión regular en el primer argumento de RewriteRule se RewriteRule con foo . Se eliminan el protocolo ( http ), el nombre de host ( example.com ) y el prefijo para este directorio ( / ). En el otro extremo, la cadena de consulta ( ?id=1 ) también se elimina.

<Directory "/">
  RewriteRule ^foo$ bar [L]
</Directory>

En el siguiente ejemplo, al utilizar la url http://example.com/topic/15-my-topic-name , el primer argumento de RewriteRule se comparará con topic/15-my-topic-name :

<Directory "/topic/">
  RewriteRule ^topic/([0-9]+)-[^/]*/?$ topics.php?id=$1 [L]
</Directory>

En el archivo de configuración dinámica.

Cuando la siguiente regla se coloca en un archivo .htaccess que está en la carpeta www-root y luego se usa en la url http://example.com/foo?id=1 , la primera expresión regular se compara con foo .

RewriteRule ^foo$ bar [L]

En el contexto por directorio, la url coincidente nunca comienza con un / . En tal contexto, una directiva que comience con RewriteRule ^/ nunca coincidirá con nada.

Reescribe las reglas en el contexto del host virtual.

El contexto del host virtual es una parte del archivo de configuración estática entre las etiquetas <VirtualHost> y </VirtualHost> .

RewriteRule 's en el contexto del host virtual coincide con la parte de una url después del protocolo, nombre de host y puerto, y antes de la cadena de consulta.

Cuando se usa la siguiente regla para la url http://example.com/foo?id=1 , la expresión regular en el primer argumento de RewriteRule se RewriteRule con /foo .

<VirtualHost 1.2.3.4:80>
  ServerName example.com

  RewriteEngine on
  RewriteRule ^/foo$ /bar [L]
</VirtualHost>


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow