我试图阻止访问某些网址:
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]它成功地工作了,我无法访问网址。那么,如何使用RewriteMap实现相同的结果呢?
发布于 2022-06-22 07:21:28
这是一种“自食其力”的疏忽:${REQUEST_URI}包括了租赁业的斜线。如果你有
/questions/topic deny在你的档案里,你应该没事的。(RewriteMap为密钥查找做了精确的匹配;当您显式地将questions/topic放在RewriteCond中时,它就是regexp匹配,而且由于它没有被^和/或$锚定,所以在您的情况下可以归结为子字符串匹配。)
作为个人爱好:由于您的RewriteRule没有对匹配做任何事情,所以您可以编写RewriteRule ^而不是RewriteRule .*来“匹配任何东西”。前者有可能更快,因为它不需要查看字符串,因为.*是贪婪的,并且会读取所有字符串。
https://unix.stackexchange.com/questions/676950
复制相似问题