.htaccessファイルを直接変更せずに、WordPress の mod 書き換えルールを変更しようとしています。この Web ページによると可能のようです: WordPress の .htaccess に mod_rewrite ルールを追加します。指示に従い、次のようにプラグインを作成しました。ファイル名を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')
はクラス メソッドを渡すように見えますが、Web ページはクラスの作成について何も伝えていません。それは本当に単純なはずです。
ありがとう。