2017-03-01 9 views
0

リクエストに自分のサイトが参照元として登録されていないが、パラメータ付きの特定のURLを除外したい場合にのみ、私のURLのmod-rewriteによるアクセスをリダイレクトしたい。mod-rewriteのためのregexpのインクルードと除外

これが今日(リダイレクトのために働く)私のルールです:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} GET 
    RewriteCond %{REQUEST_URI} .*profile/login* 
    RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$  [NC] 
    RewriteCond %{HTTP_REFERER} ^$ 
    RewriteRule ^(.*)$ https://example.com/ [R=307,L] 
</ifModule> 

しかし、私は、次のURLがリダイレクトされていないとします

https://example.com/profile/login/?my_param=my-param-value&key=XXXXXXX

私は手を前に知っていませんクエリ文字列値、クエリ文字列名のみ

ルールのURLをどのように除外できますか?

は、

よろしく、

GV

答えて

0

をありがとう、私は特定のクエリ文字列パラメータと値を持つURLを除外するために、私の.htaccessファイルに次の条件を使用してきました。

するRewriteCondの%{QUERY_STRING}(^ | &)!rcp_action = lostpassword_reset($ | &)

あなたの書き換えルールを考えると、私は%{QUERY_STRING}をチェックするために新しい行を追加したいです条件を次のようにあなたのケースでは

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} GET 
    RewriteCond %{REQUEST_URI} .*profile/login* 
    RewriteCond %{HTTP_REFERER} !^http(s)?://example.com(/)?.*$  [NC] 
    RewriteCond %{QUERY_STRING} !(^|&)rcp_action=lostpassword_reset($|&) 
    RewriteCond %{HTTP_REFERER} ^$ 
    RewriteRule ^(.*)$ https://example.com/ [R=307,L] 
</ifModule> 

を、あなたは、お使いのパラメータ名my_param、だけでなく、あなたのパラメータの値によってlostpassword_resetrcp_actionを交換する必要があるだろう。

これは私自身のサイトSlideModelでテストしました。これは、クエリ文字列パラメータに基づいて特定の条件が指定された場合、メンテナンスページにリダイレクトされます。

関連する問題