2016-08-04 1 views
-1

クエリ文字列検索エンジンにはまだいくつかのget変数が含まれています。より多くの変数を使用する以前のバージョンのクエリ文字列。URLを書き換えてクエリ文字列変数を削除する

古い変数が含まれているときに自分のサイトが現在行っている404を返す代わりに、変数を削除するようにURLを書き換えようとしています。それが表示されることがあります。 だから私は、これはすでに着信トラフィックをリダイレクトするアプリケーションのページに行くと

http://example.com/page?var1=123&var3=xyz

になるために

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

をしたいです。

注:私は、呼び出されているページや.htaccessにアクセスできない。

+0

*、任意の順序でそれが表示される場合があります* - 例がありますか? – RomanPerekhrest

+0

上記の例では、var2を完全に削除します。 – tcam27

答えて

0

あなたは、クエリ文字列のどこからでもvar2=クエリパラメータを削除するには、この単一のルールを使用することができます。

RewriteEngine On 

RewriteCond %{THE_REQUEST} \?(.*&)?var2=[^&]*&?(\S*)\sHTTP [NC] 
RewriteRule ^page/?$ %{REQUEST_URI}?%1%2 [R=302,NE,L] 
+0

上記のように、私は.htaccessファイルにアクセスできない – tcam27

+0

アクセス権を持つ管理者を見つけ、このルールを使用するように依頼します。 – anubhava

+0

私はnginxを使用しており、ホスティングプロバイダはすべての設定ファイルへのアクセスを制限します – tcam27

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 
+0

これはnullであれば(例えば、http://example.com/page?var1=123&var2=&var3=xyz)、最後のパラメータ(例:http://example.com/page?var1)も削除します= 123&var3 = xy&var2 = 890) – tcam27

+0

@ tcam27、確かに、それらのケースで動作します。ちょうど試してください – RomanPerekhrest

+0

完璧に働いた! – tcam27

関連する問題