Wordpress自定义列表页面

时间:2013-08-13 20:40:08

标签: .htaccess url-rewriting

我有WordPress网站,有电影和演员自定义帖子类型。我也与电影和演员建立了关系。

我有一个页面列出与演员有关的电影。在此页面上,访问者可以看到演员扮演角色的角色。

此页面网址如下:

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

id指的是演员,我id正在进行查询并在页面上显示。 此页面也支持分页,此URL也适用:

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

actors-film页面是一个使用自定义模板的页面,此模板确定演员ID并显示他的电影。

每件事都运作正常,但我想更改一点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 我试图用.htaccess抓住这种网址,但无法捕捉它,它总是显示404未找到。

  3. 所以,我需要用分页支持进行重写,请你建议我这样做吗?

    编辑:这是我的.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]

1 个答案:

答案 0 :(得分: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;
}

现在我们可以调用网址http://mywebsite.com/actors-films/john-doe