2012-02-13 21 views
2

mod_rewriteを使用して特定のパターンがtxtファイルにあるかどうかを確認し、見つかった場合はリダイレクトする必要があります。マップファイルにあるユーザーIDが含まれているかどうかに基づいて、スプラッシュページにURLをリダイレクトする必要があります。RewriteMapでパターンが見つかった場合のみリダイレクトするmod_rewriteが必要

すべてのユーザーIDが同じパターンに準拠しているため、そのパターンと一致してマッピングにフィードします。ユーザーIDが次のように表示されることがあります。

12ab-34bc-5601 

パターンとそれに続くリダイレ​​クトの一致がうまくいきます。一致するものが見つかると、ユーザーはスプラッシュページにリダイレクトされます。ただし、マップに一致するものが見つからない場合は、元の要求にリダイレクトされます。 Lフラグを使用してもリダイレクトループが作成されます。

RewriteEngine on 
RewriteMap UserBlockMap txt:/home/username/users.map 
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE] 

私はこのリダイレクトループを破るために何かできることありますかRewriteMap命令はちょうど私がここで使用するツールではないでしょうか?

答えて

1

私はこれまで気づいていませんでしたが、RewriteRuleはバックアップしてRewriteCondをチェックすることができます。私が見つけた解決策はこれでした。

RewriteCond ${UserBlockMap:$3} !^$ [NC] 
RewriteRule <user id pattern> ${UserBlockMap:$3|$1} [R,L,NE] 

このブログ記事に記載されている内容に基づいています。 http://www.jeremytunnell.com/posts/mod_rewrite-attempting-to-bend-rewritemap-rewritecond-and-rewriterule-to-my-will

+2

私たちは通常次のように書きます: 'RewriteCond $ {UserBlockMap:$ 3 | NOT_FOUND}!NOT_FOUND' – regilero

関連する問題