我正在尝试将新的外部/非WP重写规则添加到.htaccess
但WP不断增加[QSA,L]
直到规则结束。如何防止QSA部件?
此行添加重写规则:
$wp_rewrite->add_external_rule(\'go/([0-9]+)/?.*$\', \'wp-content/plugins/xswpc/redirect.php?id=$1\');
这是我的
.htaccess
RewriteRule ^go/([0-9]+)/?.*$ /wp-content/plugins/xswpc/redirect.php?id=$1 [QSA,L]
我想要的是:
RewriteRule ^go/([0-9]+)/?.*$ /wp-content/plugins/xswpc/redirect.php?id=$1 [L]
最合适的回答,由SO网友:Nicolai Grossherr 整理而成
apache重写标志如下QSA
硬编码,请参阅source. 不知道为什么它会困扰你,但如果你真的想改变它,那么你可以而且应该使用mod_rewrite_rules
钩住那个。下面是一个如何操作的示例:
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;
}
小心,我还没有测试正则表达式。