URL Rewrite on a WordPress Page Query String

非 Y 不嫁゛ 提交于 2021-02-07 09:30:00

问题


I have a WordPress site with a custom page comparison that gets a string.

Now it takes:

mysite.com/phones/compare/?between=samsung-galaxy-note-3-vs-nokia-lumia-730

It needs to be like that:

mysite.com/phones/compare/samsung-galaxy-note-3-vs-nokia-lumia-730

I've tried adding code on my site's .htaccess that didn't worked for me and went to WordPress 404 page:

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

Also I need to redirect to the new search engine friendly URL too when user gets to mysite.com/phones/compare/?between= URL.


回答1:


You are getting a 404 page because WordPress internally doesn't understand how to handle the URL. So the solution you are looking for will be a combination of .htaccess (for the redirection) plus a rewrite rule so that WordPress can handle the URL

Add the following to 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' );
}

Replace XXX with the page_id of compare page, flush the rewrite rules by re-saving your permalink structure. Now add a rule to .htaccess for the redirection and that should work.

EDIT

Add the following code to functions.php to access between query var in the page

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

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

And you can then access it using get_query_var("between")




回答2:


You need to add your rules before the wordpress rules. The one you have should work as long as it's before any of the wordpress rules, but in order to redirect a request with the query string you need this:

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

Again, the rule that you have plus the one above need to be before all of your wordpress rules.



来源:https://stackoverflow.com/questions/27162489/url-rewrite-on-a-wordpress-page-query-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!