Php 在WordPress页面查询字符串上重写URL

Php 在WordPress页面查询字符串上重写URL,php,wordpress,.htaccess,mod-rewrite,url-rewriting,Php,Wordpress,.htaccess,Mod Rewrite,Url Rewriting,我有一个WordPress站点,它有一个自定义的页面比较,可以得到一个字符串 现在需要: mysite.com/phones/compare/?between=samsung-galaxy-note-3-vs-nokia-lumia-730 它必须是这样的: mysite.com/phones/compare/samsung-galaxy-note-3-vs-nokia-lumia-730 我已尝试在我的网站的.htaccess上添加代码,但该代码对我无效,并转到WordPress 404页

我有一个WordPress站点,它有一个自定义的页面比较,可以得到一个字符串

现在需要:

mysite.com/phones/compare/?between=samsung-galaxy-note-3-vs-nokia-lumia-730
它必须是这样的:

mysite.com/phones/compare/samsung-galaxy-note-3-vs-nokia-lumia-730
我已尝试在我的网站的.htaccess上添加代码,但该代码对我无效,并转到WordPress 404页面:

RewriteRule ^phones/compare/(.+?)/?$ phones/compare/?between=$1 [NC,L]

当用户访问mysite.com/phones/compare/?between=URL时,我还需要重定向到新的搜索引擎友好URL。

您需要在wordpress规则之前添加规则。只要它在任何wordpress规则之前,您就应该使用它,但是为了使用查询字符串重定向请求,您需要:

RewriteCond %{THE_REQUEST} \ /+phones/compare/\?between=([^&\ ]+)
RewriteRule ^ /phones/compare/%1? [L,R]

同样,您拥有的规则加上上面的规则必须在所有wordpress规则之前。

您将获得一个404页面,因为wordpress内部不了解如何处理URL。因此,您正在寻找的解决方案将是.htaccess(用于重定向)和重写规则的组合,以便WordPress可以处理URL

将以下内容添加到functions.php

add_action( 'init', 'init_custom_rewrite' );

function init_custom_rewrite() {

        add_rewrite_rule(        
            '^phones/compare/([^/]*)/?',        
            'index.php?page_id=XXX&between=$matches[1]',        
            'top' );
}
用比较页面的页面id替换
XXX
,通过重新保存永久链接结构刷新重写规则。现在为重定向向.htaccess添加一个规则,这应该可以工作了

编辑 将以下代码添加到functions.php以访问页面中的
between
query var

add_filter('query_vars', 'my_query_vars', 10, 1);

function my_query_vars($vars) {
    $vars[] = 'between'; 
    return $vars;
}

然后您可以使用我添加的
get\u query\u var(“between”)

访问它,但它将重定向到WordPress 404页面。它应该停留在同一个比较页面上,并显示相同的结果谢谢!成功了。但是现在我无法获取请求的字符串,该字符串以前是$\u GET['between']。没有问题,我可以从服务器请求URI获取。。?有没有办法直接获取请求值?啊,对不起,忘了。我只是一个凡人:)。已更新我的代码。这对我不起作用。我在这里提出了一个新的问题:如果你能,看看你是否能帮助我。Tnx