WP dispone di una funzione per generare RewriteCond in .htaccess?

30 apr 2012, 11:52:05
Visualizzazioni: 3.19K
Voti: 2

So che posso modificare manualmente .htaccess e aggiungere un'istruzione RewriteCond all'interno, ma ho bisogno di creare un plugin che faccia questo nel modo corretto utilizzando le rewrite di WP che poi vengono inserite in .htaccess con flush_rewrite_rules(). In questo caso ho bisogno di RewriteCond.

WP ha qualche funzione poco conosciuta che mi permette di inserire un'istruzione RewriteCond in .htaccess?

0
Tutte le risposte alla domanda 1
2

In breve, sì...

Regole di Rewrite 'Esterne'

Se in add_rewrite_rule la regola non è diretta a index.php, allora la regola viene trattata come una regola 'esterna' (cioè non da elaborare con la gestione interna dei rewrite di WordPress) e invece viene scritta nel file .htaccess. Ad esempio, se:

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

viene utilizzata invece di

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

Allora la regola viene riconosciuta come una regola non (interna) di WordPress e viene aggiunta al file .htaccess invece che essere gestita internamente. Nota per le regole 'esterne' - si usa $1 invece di $matches[1];

Aggiungere regole personalizzate a .htaccess

Quando le regole di rewrite vengono svuotate, il file .htacess viene scritto. C'è un hook che filtra ciò che viene effettivamente scritto. mod_rewrite_rules

function wpse50631_htaccess( $rules ){
   //Aggiungere o anteporre regole extra.
   return $rules;
}
add_filter('mod_rewrite_rules', 'wpse50631_htaccess');

Il codex dice questo:

mod_rewrite_rules() è la funzione che prende l'array generato da rewrite_rules() e lo trasforma effettivamente in un insieme di regole di rewrite per il file .htaccess. Questa funzione ha anche un filtro, mod_rewrite_rules, che passerà alle funzioni la stringa di tutte le regole da scrivere in .htaccess, inclusa la sezione circostante <IfModule>. (Nota: potresti anche vedere plugin che usano l'hook rewrite_rules, ma è deprecato).

30 apr 2012 12:09:04
Commenti

Aha! L'aspetto principale è quella sezione finale che hai qui in vanilla. È qui che posso modificare la stringa che viene scritta ed è qui che posso aggiungere RewriteCond.

Volomike Volomike
30 apr 2012 12:34:13

@Volomike È saggio notare che non ogni installazione di WordPress permette a WordPress di modificare direttamente il file .htaccess, quindi non contare di poterlo fare... come minimo mostra un avviso e alcune istruzioni per farlo manualmente se non può essere fatto in modo programmatico.

mor7ifer mor7ifer
30 apr 2012 12:38:07