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

30 abr 2012, 11:52:05
Vistas: 3.19K
Votos: 2

Sé que puedo editar .htaccess manualmente y agregar una declaración RewriteCond dentro, pero necesito construir un plugin que haga esto de la manera correcta usando las reescrituras de WP que luego se insertan en .htaccess con flush_rewrite_rules(). Necesito RewriteCond en este caso.

¿WP tiene alguna función poco conocida que me permita insertar una declaración RewriteCond en el .htaccess?

0
Todas las respuestas a la pregunta 1
2

En resumen, sí...

Reglas de Reescribir 'Externas'

Si en add_rewrite_rule la regla no está dirigida a index.php, entonces la regla se trata como una regla 'externa' (es decir, no será procesada por el manejo interno de WordPress de las reescrituras) 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 usa en lugar de

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

Entonces la regla se reconoce como una regla no (interna) de WordPress y se añade al archivo .htaccess en lugar de manejarse internamente. Nota para reglas 'externas' - usas $1 en lugar de $matches[1];

Añadiendo reglas personalizadas a .htaccess

Cuando las reglas de reescritura se actualizan, el archivo .htacess se sobrescribe. Existe un gancho que filtra lo que realmente se escribe. mod_rewrite_rules

function wpse50631_htaccess( $rules ){
   //Añadir o anteponer reglas adicionales.
   return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');

El codex dice lo siguiente:

mod_rewrite_rules() es la función que toma el arreglo generado por rewrite_rules() y realmente lo 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á a las funciones la cadena de todas las reglas que se escribirán en .htaccess, incluyendo la sección circundante <IfModule>. (Nota: también puedes ver plugins usando el gancho rewrite_rules, pero esto está obsoleto).

30 abr 2012 12:09:04
Comentarios

¡Ajá! Lo principal es esa última sección que tienes aquí en vanilla. Aquí es donde puedo editar la cadena que se escribe y aquí es donde puedo agregar RewriteCond.

Volomike Volomike
30 abr 2012 12:34:13

@Volomike Es prudente tener en cuenta que no todas las instalaciones de WordPress permiten que WordPress modifique directamente el .htaccess, así que no cuentes con poder hacerlo... como mínimo muestra una advertencia y algunas instrucciones para hacerlo manualmente si no se puede hacer programáticamente.

mor7ifer mor7ifer
30 abr 2012 12:38:07