将旧查询字符串URL重定向到新的ADD_REWRITE_RULE URL

时间:2017-01-05 作者:Bryan

我有这样一个自定义页面:

website.com/show/?id=9999&n=show-name
/show/ 是一个发布ID为540的WordPress页面。我添加了重写规则以将URL转换为:

website.com/show/9999/show-name/
这是我在主题中使用的代码functions.php 对于重写:

add_action( \'init\', \'init_custom_rewrite\' );

function init_custom_rewrite() {
    add_rewrite_rule(        
        \'^show/([^/]*)/([^/]*)/?\',        
        \'index.php?page_id=540&id=$matches[1]&n=$matches[2]\',        
        \'top\' );
}

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

function my_query_vars($vars) {
    $vars[] = \'id\';
    $vars[] = \'n\';
    return $vars;
}
现在URLwebsite.com/show/9999/show-name/ 工作正常。

However, 现在,我需要确保如果有人试图使用旧URL访问该页面:

website.com/show/?id=9999&n=show-name

。。。他们将被重定向到新的SEO友好url:

website.com/show/9999/show-name

How do I setup that redirect?

1 个回复
最合适的回答,由SO网友:Bryan 整理而成

我想出来了。我把这些重写规则放进去了。htaccess:

RewriteCond %{QUERY_STRING} ^id=([^/]*)&n=([^/]*)$ 
RewriteRule ^show/?$ /show\\/%1\\/%2\\/? [R=301,L]

相关推荐

Redirect undesirable domain

我有一个wordpress网站,我想运行两个不同域的主机。站点位于域example1的第一个主机中。com工作正常,但在第二个主机域示例2中。com重定向到示例1。com域。中没有设置重定向。htaccess文件。两个域中每个域的DNS都已正确设置。我的问题是我应该如何获得它这是重定向程序代码的哪一部分?