我正在尝试通过WordPress插件在.htaccess中添加规则,该插件工作正常并添加规则,但有时会被覆盖。
我知道使用mod_rewrite_rules
添加的规则会在WordPress块中添加规则,介于# BEGIN WORDPRESS
和# END WORDPRESS
之间,并且所有自定义规则都应添加到该块之外。< / p>
有人可以告诉我如何在.htaccess中的WordPress块之外添加自定义规则?这是我目前正在使用的代码......
function vary_accept_encoding_filter( $rules ) {
$accept_encoding_header = <<<EOD
\n<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>\n
EOD;
return $accept_encoding_header . $rules;
}
add_filter('mod_rewrite_rules', 'vary_accept_encoding_filter');
答案 0 :(得分:1)
save_mod_rewrite_rules()
WordPress函数正在添加所有Apache重写规则,它基本上将# BEGIN WordPress
和# END WordPress
视为已授予,并且仅在这些标记之间进行写入。因此,如果您使用默认的重写规则过滤器和操作,则无法在这些标记之外写入。
但是,我并不是说你的要求是不可能的。
我可以建议你挂钩update_option_rewrite_rules
动作。这个是在重写规则刷新后调用的。在此操作上,挂钩一个函数,将您的规则添加到.htaccess的结尾或开始(任何您喜欢的地方),手动。如果您需要有关如何手动将规则添加到.htaccess的信息,您可以看到WordPress如何做到这一点 - 请参阅save_mod_rewrite_rules()
中的/wp-admin/includes/misc.php
函数。
祝你好运。
<强> 修改 强>
要将您的功能添加到update_option_rewrite_rules
挂钩,请执行以下操作:
add_action('update_option_rewrite_rules', 'wppsb_enable_gzip_compression');
function wppsb_enable_gzip_compression() {
// your code here
}