¿Tiene WP una función para generar .htaccess RewriteCond?

2

Sé que puedo editar .htaccess manualmente y agregar una declaración RewriteCond en el interior, pero necesito crear un complemento que lo haga de la manera correcta mediante el uso de reescrituras WP que luego se insertan en .htaccess con flush_rewrite_rules (). Necesito RewriteCond en este caso.

¿Tiene WP alguna función oscura que me permita insertar una declaración RewriteCond en .htaccess?

    
pregunta Volomike 30.04.2012 - 13:52

1 respuesta

6

En resumen, sí ...

Reglas de reescritura 'externas'

Si en add_rewrite_rule la regla no está dirigida a index.php , la regla se trata como una regla 'externa' (es decir, no debe ser procesada por el manejo interno de las reescrituras de WordPress) y en su lugar se escribe en el% archivo .htaccess . Es decir. si:

add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','somethingelse.php?p=12&food=$1 &variety=$2','top');

se utiliza en lugar de

add_rewrite_rule('^nutrition/([^/]*)/([^/]*)/?','index.php?p=12&food=$matches[1]&variety=$matches[2]','top');

Luego, la regla se reconoce como una regla de WordPress no (interna) y se agrega el archivo .htaccess en lugar de tratarse internamente. Nota para las reglas 'externas': utiliza $1 en lugar de $matches[1] ;

Agregar reglas personalizadas a .htaccess

Cuando se borran las reglas de reescritura, se escribe el archivo .htacess . Hay un gancho que filtra lo que realmente está escrito. mod_rewrite_rules

function wpse50631_htaccess( $rules ){
   //Append or preppend extra rules.
   return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');

El codex dice esto:

  

mod_rewrite_rules() es la función que toma la matriz generada por rewrite_rules () y la convierte en un conjunto de reglas de reescritura para el archivo .htaccess . Esta función también tiene un filtro, mod_rewrite_rules , que pasará las funciones de la cadena de todas las reglas que se escribirán a .htaccess , incluida la sección circundante <IfModule> . (Nota: también puede ver los complementos que utilizan el enlace rewrite_rules, pero esto está en desuso).

    
respondido por el Stephen Harris 30.04.2012 - 14:09

Lea otras preguntas en las etiquetas