2011-07-11 18 views
22

¿Cuál es la diferencia entre %1 y $1 en .htaccess?

Por ejemplo,

# to remove www 
    RewriteCond %{HTTP_HOST} ^(\w+)\.mydomain\.com [NC] 

    RewriteRule .* http://mydomain.com/%1 [R=301,L]  
    # versus 
    # RewriteRule .* http://mydomain.com/$1 [R=301,L] 

He estado usando Dave Child's .htaccess cheat sheet y Jackol's .htaccess cheat sheet, así como la ayuda adicional Apache mod_rewrite docs pero sería grande.

+5

Los documentos 'mod_rewrite' dicen que las referencias hacia atrás'% N' son para patrones RewriteCond, mientras que las referencias hacia atrás '$ N' están pensadas para patrones RewriteRule. – BoltClock

Respuesta

40

%1 refiere a un patrón emparejado en una condición RewriteCond, mientras $1 refiere a un patrón coincidente dentro de un RewriteRule.

Más genéricamente, utilice %n para referirse a los partidos numerados del RewriteCond patrones condición de expresiones regulares, y el uso de $n para referirse a partidos numerados del RewriteRule patrones de expresiones regulares.

Cuestiones relacionadas