.htaccess /?tag = to /?product_tag =重定向保留查询

时间:2018-01-26 08:56:21

标签: .htaccess url-redirection

我在使用Wordpress的Apache上。 我用来运行标准的Wordpress标签系统,它使用#include <iostream> #include <vector> using namespace std; struct EvenNumberException { }; bool checkQ(int a, int b) { if (a < b) return true; else if (a == b) return false; else /*This is last else.*/ { throw EvenNumberException{}; } } vector<int> fun(vector<int> vec) { vector<int> result; int die = 29; try { for (int i : vec) { do { i += 2; result.push_back(i); } while (checkQ(i, die)); } } catch (EvenNumberException) { /* no cleanup necessary */ } return result; } int main() { vector<int> loop_times{ 1, 2, 3 }; vector<vector<int> > vec_result; for/*his is outer for*/ (int i : loop_times) { vector<int> vec{ 23, 25, 26, 25 }; vector<int> tem_vec = fun(vec); vec_result.push_back(tem_vec); } for (vector<int> j : vec_result) { for (int k : j) cout << k << " "; cout << endl; } return 0; } 格式。

最近我迁移到使用/?tag=格式的Woocommerce。 有没有办法自动将查询/?product_tag=页面的访问重定向到/?tag=xxx,同时仍保留查询原封不动的内容?

例如,Googlebot将我的所有网页编入索引:

/?product_tag=xxx

因此,当Googlebot再次访问此网址时,它将被重定向到

https://wwww.domain.com/fruit/apples/?tag=red

我试过了:

https://wwww.domain.com/fruit/apples/?product_tag=red

但它不起作用。似乎RewriteEngine On RewriteRule ^(.*)?tag=(.*?)$ /$1product_tag=$2 [R=301,L] 字符导致问题。

1 个答案:

答案 0 :(得分:1)

请注意,RewriteRule第一部分仅与查询字符串之前的URL部分匹配。

您需要使用RewriteCond和regex反向引用来标识查询字符串tag

RewriteCond %{QUERY_STRING} tag=([^&]+)
RewriteRule ^(.+) $1?product_tag=%1 [R=301,L]

$1(.+)的正则表达式反向引用,而%1([^&]+)的正则表达式反向引用。