2011-11-15 7 views
4

.htaccessを少し習得しようとしています。私はスニペットをオンラインで見ましたが、動作させることはできません。基本的にはこのようになりますクエリ文字列に特定の値がない場合は、代わりにindex.phpまたは他のページにリダイレクトします。それ、どうやったら出来るの?これは、代わりにindex.phpにリダイレクトされます.htaccess:クエリ文字列が特定の値を持っているかどうかを確認するか、それ以外の場合はリダイレクトします。

www.domain.com/somefile.php?a=apples&b=xyz 

www.domain.com/somefile.php?a=stinkycheese&b=xyz 

答えて

15

は、あなたがするRewriteCondの内側%{QUERY_STRING}変数を使用する必要が

これはりんご値を探します。クエリ文字列にredirect=noが存在する場合たとえば、あなたがリダイレクトしたくないのであれば、それは次のようになりますのRewriteCondに障害が発生している場合

RewriteCond %{QUERY_STRING} !(^|&)redirect=no($|&) 
RewriteRule . /index.php [L] 

を(それがクエリ文字列でredirect=noを持っています)次に、次の規則を適用しないでください。要求のURIが/index.phpに書き換えられます。必要な実際のルールは異なる場合がありますが、RewriteCondと%{QUERY_STRING}を使用することで、必要な基本的なアイデアが得られます。

+0

本当に助けてくれたJonさんに感謝します。 .htaccessはQUERY STRINGを使用してクエリをスキャンできるので、その部分も削除できますか?たとえば、存在する場合にはチェックを行った後にredirect = noを取り除きます(または、使用方法によっては存在しません)。 – enchance

+0

* 'redirect = no'ではないものすべてをマッチさせ、バックレフェンス(%1、%2、%3など)を使用してそれを含めることができます。あなたのルールで 'RewriteCond%{QUERY_STRING} ^(。*)redirect = no&?(。*)$'のようなものが 'RewriteRule。 /index.php?%1%2 [L] ' –

+0

逆参照(%1、%2、%3など)の使用についてお話する貴重なWeb投稿をご存知ですか?私はちょうどあなたが投稿したサンプルコードについてもっと学びたいと思います。 – enchance

関連する問題