web-dev-qa-db-ja.com

カスタム投稿タイプアーカイブリダイレクト

私は(sometext)に変更した(sometext)というスラッグを使ったカスタム投稿タイプを持っていましたそしてそれは素晴らしい作品

だから、例えば:

のようなURLの私の投稿

http://localhost/sometext/innerposts

にリダイレクトされます

http://localhost/someothertext/innerposts 

私のアーカイブページではありません

基本的に私はリダイレクトしたいです

http://localhost/sometext/ to
http://localhost/someothertext/ 

私の.htaccessファイルに、私はそれが機能するように文字列を追加してみました

RewriteRule ^/sometext$ ^/someothertext/$ [R=301,L]

しかしそれは失敗します。

私は.htaccessの書き換えがとても苦手です。誰かが私を助けてくれるなら、私は本当に感謝します。

ありがとう。

1
Kuldeep Daftary

アーカイブページへのリンクはWordPressの書き換えルールに保存されます。これらのルールはあなたのWordPressシステムのフロントエンドにあるいくつかの場所を見つけるために使われます。カスタム投稿タイプのslugを変更すると、通常のページは新しい場所に直接リダイレクトされますが、アーカイブページは変更されません。これは書き換えルールが再生成されないためです。

これを解決するには、設定 - >パーマリンクに移動してパーマリンク構造をもう一度保存し、ページをリロードするとアーカイブページがロードされます。正しく.

あなたの.htaccessの書き換え規則は必要ないでしょう。

また、決してあなたの.htaccessにWordPressが書き換えるものを除いて書き換え規則を入れてはいけません。いくつかの規則を追加したい場合は、 書き換えAPI を使用してこれを行います。

2
Mike Madern

それが言及されたように。 .htaccessに書き換え規則を決して入れないで、代わりに 書き換えAPI を使用してください。あなたの目標を達成するために、あなたのfunctions.phpまたはサイト特有のプラグインで以下のコードを使ってください:

add_action( 'generate_rewrite_rules', 'my_rewrite_rules' );
function my_rewrite_rules( $wp_rewrite )
{
    $wp_rewrite->rules = array(
        'sometext/(.+?)/?$' => $wp_rewrite->index . '?someothertext='.$wp_rewrite->preg_index( 1 ),     
        'sometext/(.+?)/([0-9]{1,})/?$' => $wp_rewrite->index . '?someothertext='.$wp_rewrite->preg_index( 1 ). '&paged=' . $wp_rewrite->preg_index( 2 ),               
    ) + $wp_rewrite->rules;
}
0
david.binda