web-dev-qa-db-ja.com

Add_rewrite_ruleの代わりにApacheフォールバック

私の要件は、Wordpressで既存のサイトのSEOフレンドリーなURLをすることです。

例えば、

現在のURLhttp://test.com/test/?pid=19971 です「test」ページは、いくつかのカスタムプラグインからのデータをレンダリングしています。

私の新しいSEO URLhttp://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でそれを行う必要があるとき。

だから、誰も私にフォールバックリソースで同じことをする方法を手助けすることができます。

1
Harish Chinju

これで私の問題は解決しました。

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');
1
Harish Chinju