特定のURL変数の存在に対するhtaccessリダイレクト

.htaccess mod-rewrite
特定のURL変数の存在に対するhtaccessリダイレクト

数時間一生懸命読んでいますが、まだ必要なものが見つかりません! ここの誰かが助けてくれることを願っています。

私が達成したいのは、特定の変数を持つ特定のURLを別のページにリダイレクトすることですが、他のURL変数がある場合はリダイレクトしません。

eg.

  • index.php?option = com_user-これはindex.phpにリダイレクトする必要があります

  • index.php?option = com_user&view = login-これはリダイレクトしないでください

  • index.php?option = com_user&view = login&foo = bar-これは禁止です
    リダイレクトされた

特定の変数の存在をテストする多くの例を見つけましたが、その変数をテストし、他の変数が存在しないことをテストしたいと思います。

誰も手伝ってくれる?

前もって感謝します。

  0  1


ベストアンサー

おそらく、内部リダイレクトのみを行う場合、他のパラメーターが存在しない場合、スクリプトはそのパラメーターを無視できます。 しかし、それはあなたが尋ねたものではなかったので、これを `mod_rewrite`でどのように行うことができるか見てみましょう。

クエリ文字列に_anything_ elseが含まれているかどうかだけを気にする場合は、 `option = com_user`だけが存在するかどうかを確認できます。

RewriteEngine On

RewriteCond %{QUERY_STRING} =option=com_user [NC]
RewriteRule index\.php index.php?

ただし、これにより、まだ `/index.php?option = com_user&complete = nonsense`がすり抜けることができるため、もう少し制限したい場合は、次のようにすることができます。

RewriteEngine On

# Check if the query string contains option=com_user
RewriteCond %{QUERY_STRING} (^|&)option=com_user(&|$)
# Check that all of these other parameters were not provided
RewriteCond %{QUERY_STRING} !(^|&)view=
RewriteCond %{QUERY_STRING} !(^|&)foo=
RewriteRule index\.php index.php?

1


タイトルとURLをコピーしました