【发布时间】:2012-10-08 07:26:23
【问题描述】:
我正在尝试修改 WordPress 中的 mod 重写规则,而不直接修改 .htaccess 文件。根据这个网页似乎可以: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') 部分看起来像是传递了一个类方法,但网页并没有说明任何有关创建类的信息。这应该很简单。
谢谢。
【问题讨论】:
标签: php mod-rewrite wordpress