1

私は過去6年以上古いPHP-Nukeサイトを使用していましたが、ついにWordpressに変換しました。他のサイトにはおそらく何百もの古いリンクが投稿されており、新しいリンクにリダイレクトする必要があります。

古いリンクは次のようになります

http://www.mysite.com/modules.php?name=NDReviews&op=Story2&reid=387

新しいリンクは次のようになります

http://www.mysite.com/cooler-master-ceres-400-headphones/2/

古いリンクごとに変わる2つの項目は、= Story#とreid =#です。

= Story#は、新しい/#/を指す必要があります

古いreid=#は/new-name-for-review/を指す必要があります

ありがとう!

4

1 に答える 1

0

簡単なプラグインのコーディング方法を知っていただければ幸いです。これは、再生を開始するためのスケルトンになる可能性があります。

add_action('init', 'flushRewriteRules');
function flushRewriteRules()
{
    global $wp_rewrite;
    $wp_rewrite->flush_rules();
}

add_filter('rewrite_rules_array', 'insertMyRewriteRules');
function insertMyRewriteRules($rules)
{
    $newrules = array();

    // convert:
    // http://www.mysite.com/modules.php?name=NDReviews&op=Story2&reid=387
    // to:
    // http://www.mysite.com/NDReviews/2/

    $newrules['modules.php?name=([^&]*)&op=Story(\d+)&reid=(\d+)'] = 'index.php?pagename=$matches[1]&p=$matches[2]';

    // or maybe just redirecting Story# to p=# (post id)

    // convert:
    // http://www.mysite.com/modules.php?name=NDReviews&op=Story2&reid=387
    // to:
    // http://www.mysite.com/cooler-master-ceres-400-headphones/2/

    $newrules['modules.php?name=([^&]*)&op=Story(\d+)&reid=(\d+)'] = 'index.php?&p=$matches[2]';

    return $newrules + $rules;
}

可能な解決策を実験するための単なるアイデアです。いずれにせよ完全に達成可能です。

于 2012-10-28T01:47:31.130 に答える