RewriteMap が期待どおりに動作しません。

RewriteMap が期待どおりに動作しません。

特定のURLへのアクセスをブロックしようとしています。

https://example.com/questions/topic

次の内容を含むblacklist.txtファイルがあります。

questions/topic deny

これで私の設定は次のようになります。

 RewriteMap access txt:path_to_blacklist.txt
 RewriteCond ${access:%{REQUEST_URI}} deny [NC]
 RewriteRule .* - [F,L]

しかし、まだ開くことができることがわかりましたhttps://example.com/questions/topic通常、RewriteMapの代わりに次の設定を使用しようとすると:

RewriteCond %{REQUEST_URI} questions/topic  [NC]
RewriteRule .* - [F,L]

うまくいきますが、URLにアクセスできません。それでは、RewriteMapを使用して同じ結果をどのように取得できますか?

答え1

${REQUEST_URI}リースの削減を含む「後頭部を打つ」ことは監督でした。お持ちの場合

/questions/topic deny

あなたのファイルにあれば大丈夫でしょう。 (RewriteMapは正確に一致キールックアップの場合、questions/topicRewriteCondに明示的に入れると正規表現の一致で^固定されていないため、$あなたの場合は部分文字列の一致に帰結します。 )

個人的な好みに応じRewriteRuleて、マッチングに対して何もしないので、「何も一致」ではなくRewriteRule ^RewriteRule .*何も一致」と書くことができます。前者は文字列を見る必要がないので、おそらくより速いでしょう。ここでは.*貪欲で、すべての文字列を読みます。

関連情報