私の要件は、Wordpressで既存のサイトのSEOフレンドリーなURLをすることです。
例えば、
現在のURL: http://test.com/test/?pid=19971 です「test」ページは、いくつかのカスタムプラグインからのデータをレンダリングしています。
私の新しいSEO URL: http://test.com/brand/sub_category/product_name ここで、 Brand、Sub_category、product_nameがpidから取得されます。 functions.phpから次の書き換え規則を使ってデータを生成しています、
add_rewrite_rule(MY_DYNAMICALLY_POPULATED_URL.'$ page-test.php?brand='.$brand_name.'&sub='.$sub_category.'&pname='.$product_name.' [L]', 'top');
このコードでは、page-test.phpがルートディレクトリに置かれ、pidを取得するためにbrand_name、sub_category、およびproductnameを渡すことによってそのファイルからデータがレンダリングされます。そのため、pidに基づいて各商品ページがレンダリングされます。
このコードは私には問題なく動作します。データを自動的に保存すると、データは.htaccessで書き込まれ、ページは新しいSEO URLでレンダリングされます。
しかし、私のクライアントが、負荷分散の問題のために、add_rewrite_ruleの代わりにApacheのFALLBACKでそれを行う必要があるとき。
だから、誰も私にフォールバックリソースで同じことをする方法を手助けすることができます。
これで私の問題は解決しました。
function my_query_vars($vars)
{
$my_vars = array( 'PARAMETERS' );
return array_merge($my_vars, $vars);
}
add_filter('query_vars', 'my_query_vars');
function my_rewrite_rules($rules)
{
global $wp_rewrite;
$my_page = 'PAGESLUG';
$my_rule = array( 'URL/?' => 'index.php?pagename=' . $my_page . '&school_type=$matches[1]' );
return array_merge($my_rule, $rules);
}
add_filter('page_rewrite_rules', 'my_rewrite_rules');