1

我在 wordpress 中创建了一个假页面,我使用以下代码捕获了该页面:

if ($_GET['fake_page'] == "myfakepage") {
  add_filter('the_title','plugin_myown_title');
  add_filter('the_content','plugin_myown_content');
  add_action('template_redirect', 'plugin_myown_template');
}

这工作正常。现在我想做的是重写这样的这个网址

my_site?fake_page=myfakepage

my_site/product/myfakepage

其中 product 是从 wordpress 仪表板创建的现有页面。

我遵循了本指南:

http://statichtml.com/2010/mod-rewrite-baseon-on-query-string.html

并定义了这个规则:

RewriteEngine On
RewriteCond %{QUERY_STRING}     ^fake_page=(.*)$    [NC]
RewriteRule ^/$       my_site/product/%1      [NC,L,R=301]

但我得到的是

my_site/product?fake_page=myfakepage

问题出在哪里?此外,我想知道是否在浏览器中输入:

my_site/product/myfakepage

我可以让 wordpress 把它当作

 my_site?fake_page=myfakepage

没有任何重定向。谢谢!

4

1 回答 1

1

从您的functions.php中尝试此代码:

add_action( 'generate_rewrite_rules', 'my_rewrite_rules' );
function my_rewrite_rules( $wp_rewrite )
{
    $wp_rewrite->rules = array(
        'product/myfakepage/?$' => $wp_rewrite->index . '?fake_page=myfakepage',
    ) + $wp_rewrite->rules;
}

注意:您不需要该自定义 .htaccess。顺便说一句:您永远不会直接修改 .htaccess 。WordPress 中有一个广泛的重写 API,它允许您应用自定义规则。

于 2013-02-02T19:13:17.207 回答