我正在尝试在不直接修改.htaccess文件的情况下修改 WordPress 中的 mod 重写规则。根据这个网页似乎是可能的:Adding mod_rewrite Rules to .htaccess in WordPress。我按照说明创建了一个插件,如下所示。我将文件名保存为sample-mod-rewrite.php。
/* Plugin Name: Sample Mod Rewrite */
add_action('generate_rewrite_rules', array(&$this, 'generate_rewrite_rules'));
add_filter('mod_rewrite_rules', array(&$this, 'mod_rewrite_rules'));
function generate_rewrite_rules() {
global $wp_rewrite;
$non_wp_rules = array(
'simple-redirect/?$plugin_name' => 'http://google.com',
'one-more-redirect/?$plugin_name' => 'http://yahoo.com'
);
$wp_rewrite->non_wp_rules = $non_wp_rules + $wp_rewrite->non_wp_rules;
}
function mod_rewrite_rules($rules) {
$rules = preg_replace('/^(RewriteRule ^.*+/?$)plugin_name (/)(.*) ([QSA,L])$/im', '1 3 [R=301,L]', $rules);
return $rules;
}
它应该如何工作?激活插件后,当我访问http://siteurl/simple-redirect/?sample-mod-rewrite或http://siteurl/simple-redirect/?sample-mod-rewrite.php浏览器只显示 404 错误, “找不到对象!” 我想我一定做错了什么。
该部分array(&$this, 'generate_rewrite_rules')
看起来像传递一个类方法,但网页没有说明任何有关创建类的信息。这应该很简单。
谢谢。