J'essaie d'ajouter une nouvelle règle de réécriture externe/non-WP à mon .htaccess
mais WP continue à ajouter [QSA,L]
à la fin de la règle. Comment puis-je empêcher la pièce QSA?
Cette ligne ajoute le RewriteRule:
$wp_rewrite->add_external_rule('go/([0-9]+)/?.*$', 'wp-content/plugins/xswpc/redirect.php?id=$1');
Et ceci est la ligne résultante dans mon .htaccess
RewriteRule ^go/([0-9]+)/?.*$ /wp-content/plugins/xswpc/redirect.php?id=$1 [QSA,L]
Ce que j'aimerais, c'est:
RewriteRule ^go/([0-9]+)/?.*$ /wp-content/plugins/xswpc/redirect.php?id=$1 [L]
Les drapeaux de réécriture Apache comme QSA
sont codés en dur, voir source . Vous ne savez pas pourquoi cela vous dérangerait, mais si vous voulez vraiment le changer, vous pouvez et devez utiliser le crochet mod_rewrite_rules
pour cela. Ci-dessous un exemple sur la façon de le faire:
add_filter( 'mod_rewrite_rules', 'wpse107528_change_mod_rewrite_rules' );
function wpse107528_change_mod_rewrite_rules( $rules ) {
$pattern = '/^(?<=RewriteRule\s\^go.+\$1\s)(\[QSA,L\])$/im';
$replacement = '[L]';
$rules = preg_replace( $pattern, $replacement, $rules );
return $rules;
}
Attention, je n'ai pas testé le Regex.
Peut-être que vous pouvez essayer avec add_rewrite_rule
function wpse107528_add_external_rewrite_rule()
{
add_rewrite_rule(
'go/([0-9]+)/?.*$',
'wp-content/plugins/xswpc/redirect.php?id=$1',
'top'
);
//Uncomment when testing to avoid already refresh permalink page in wp-admin
//flush_rewrite_rules();
}
add_action( 'init', 'wpse107528_add_external_rewrite_rule' );