0

追加の URL クエリ/パラメーターを無視し、パスに基づいてリダイレクトするだけの書き換えルールを作成しようとしています。

私の会社には、使用する前にログインを強制する DNS ルーティング トリックを実行する Wifi ホットスポット サービスがあります。残念ながら、人々が WiFi から切断され、通常のセル データ サービスに戻った場合、URL 要求がまだホストに送信され、次のように表示されることがあります。

www.ourwebsite.com/login?dst=http://www.google.com/m?client=ms-android-verizon&source=android-home

/login と /login/ のベース パスを処理して、ホームページにリダイレクトする一連のルールを既に作成しました。

RewriteCond %{THE_REQUEST} ^.*\/login/\ HTTP/
RewriteRule ^(.*)login/?$ "/$1" [R=301,L]
RewriteCond %{THE_REQUEST} ^.*\/login\ HTTP/
RewriteRule ^(.*)login?$ "/$1" [R=301,L]

しかし、パスに基づいて常にリダイレクトする適切な文字列を考え出すのに問題があり、後に来るかどうかわからないクエリパラメータを無視します。

どんな助けでも大歓迎です!前もって感謝します。

4

2 に答える 2

1

私が正しく理解していれば、次のようなものがそれを行うはずです:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteRule ^login    /?   [R=301,L]

このルール セットは、着信 URL が次のようなものである限り、ルートにリダイレクトされます。

http://www.ourwebsite.com/login?any_query

于 2013-03-14T18:47:06.037 に答える
1

QSDApache 2.4.0 以降では、ルールに -flag を適用できます。

要求された URI にクエリ文字列が含まれていて、ターゲット URI に含まれていない場合、RewriteRule の既定の動作は、そのクエリ文字列をターゲット URI にコピーすることです。[QSD] フラグを使用すると、クエリ文字列が破棄されます。-- https://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_qsd

以前の Apache バージョンでこのフラグを使用すると、500 Internal Server Error.

于 2015-11-17T09:04:18.880 に答える