首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RewriteMap未按预期工作

RewriteMap未按预期工作
EN

Unix & Linux用户
提问于 2021-11-10 20:17:54
回答 1查看 74关注 0票数 0

我试图阻止访问某些网址:

https://example.com/questions/topic

我有一个blacklist.txt文件,它包含以下内容:

代码语言:javascript
复制
questions/topic deny

然后在配置中有以下内容:

代码语言:javascript
复制
 RewriteMap access txt:path_to_blacklist.txt
 RewriteCond ${access:%{REQUEST_URI}} deny [NC]
 RewriteRule .* - [F,L]

但是我发现我仍然可以正常地打开https://example.com/questions/topic,但是当我尝试使用下面的配置而不是RewriteMap时:

代码语言:javascript
复制
RewriteCond %{REQUEST_URI} questions/topic  [NC]
RewriteRule .* - [F,L]

它成功地工作了,我无法访问网址。那么,如何使用RewriteMap实现相同的结果呢?

EN

回答 1

Unix & Linux用户

发布于 2022-06-22 07:21:28

这是一种“自食其力”的疏忽:${REQUEST_URI}包括了租赁业的斜线。如果你有

代码语言:javascript
复制
/questions/topic deny

在你的档案里,你应该没事的。(RewriteMap为密钥查找做了精确的匹配;当您显式地将questions/topic放在RewriteCond中时,它就是regexp匹配,而且由于它没有被^和/或$锚定,所以在您的情况下可以归结为子字符串匹配。)

作为个人爱好:由于您的RewriteRule没有对匹配做任何事情,所以您可以编写RewriteRule ^而不是RewriteRule .*来“匹配任何东西”。前者有可能更快,因为它不需要查看字符串,因为.*是贪婪的,并且会读取所有字符串。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/676950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档