我有一个查询字符串搜索引擎仍然包含几个get变量。查询字符串的旧版本曾经有更多变量。
我没有返回我的网站当前包含这些旧变量的404,我试图重写URL以删除变量及其可能(或可能不)完全按任何顺序排列的任何值可能会出现。 所以我想要
http://example.com/page?var1=123&var2=abc&var3=xyz
http://example.com/page?var2=890&var1=123&var3=xyz
http://example.com/page?var1=123&var3=xyz&var2=
http://example.com/page?var1=123&var3=xyz&var2=q
成为
http://example.com/page?var1=123&var3=xyz
这将在已经重定向传入流量的应用程序页面上进行。
注意:我无法访问被调用的页面,也无法访问.htaccess。
答案 0 :(得分:0)
您可以使用此单一规则从查询字符串中的任意位置删除var2=
查询参数:
RewriteEngine On
RewriteCond %{THE_REQUEST} \?(.*&)?var2=[^&]*&?(\S*)\sHTTP [NC]
RewriteRule ^page/?$ %{REQUEST_URI}?%1%2 [R=302,NE,L]
答案 1 :(得分:0)
使用preg_replace
函数的解决方案:
$url1 = "http://example.com/page?var1=123&var3=xyz&var2=";
$url2 = "http://example.com/page?var1=123&var2=abc&var3=xyz";
function removeParam($url, $param){
$url = preg_replace("/&?var2=[^&]*/", "", $url);
return $url;
}
print_r(removeParam($url1, "var2")); // http://example.com/page?var1=123&var3=xyz
print_r(removeParam($url2, "var2")); // http://example.com/page?var1=123&var3=xyz