0

映画と俳優のカスタム投稿タイプを持つ WordPress サイトがあります。また、映画や俳優との関係も築いています。

俳優に関連する映画をリストするページがあります。このページでは、訪問者がどの映画の俳優が演じるかを見ることができます。

このページの URL は次のようになります。

http://www.mywebpage.com/actors-films/?id=123456

idはアクターを指しidます。これを使用してクエリを実行し、ページに表示しています。また、このページはページネーションをサポートしています。この URL も機能します。

http://www.mywebpage.com/actors-films/page/2/?id=123456

actors-filmpage はカスタム テンプレートを使用するページです。このテンプレートは俳優 ID を決定し、彼の映画を表示します。

すべて正常に動作しますが、URL を少し SEO フレンドリーに変更したいと考えています。

多くの URL 形式を試しました

  1. http://www.mywebpage.com/actors-films/jim-carrey 理由はわかりませんが、この URL はアクター ページにリダイレクトされます。

    http://www.mywebpage.com/actors/jim-carrey 
    
  2. http://www.mywebpage.com/actors-films/123456-jim-carrey この種の URL をキャッチしようとしまし.htaccessたが、キャッチする方法がありません。常に 404 not found が表示されます。

それで、ページネーションをサポートして書き直す必要があります。これを行う方法を教えてください。

編集:ここに私の.htaccessファイルがあります

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^actors-films/([0-9]*)\-([^/]*)$  ^actors-films/?id=$1 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]
</IfModule>

編集:ルールが機能しないことに気づきました:例:
http ://www.mywebsite.com/texは、このルールで404を示します:RewriteRule ^/tex /index.php [L]

4

1 に答える 1

0

これが解決策です。名前の付いたページを作成します

add_filter('query_vars', 'ap_register_query_vars');

function ap_url_redirect_rules(){
    add_rewrite_rule('actors-films/([^/]*)','index.php?pagename=artist-film-list&actor_slug=$matches[1]','top');
    flush_rewrite_rules();
}

function ap_register_query_vars($query_vars){
    $query_vars[]='actor_slug';
    return $query_vars;
}

これで、URL http://mywebsite.com/actors-films/john-doeを呼び出すことができます

于 2013-08-14T15:33:19.130 に答える