【发布时间】:2023-03-21 03:28:01
【问题描述】:
在我寻求“盗链保护”的过程中,我将 REFERER 与 HOST 进行比较,并且我想在 REFERER 中允许可选的 PORT (3000)。
我有 2 位候选人可以胜任这份工作,他们都缺少一些东西。
RewriteCond expr "! %{HTTP_REFERER} -strmatch '*://%{HTTP_HOST}/*'"
RewriteCond expr "%{HTTP_REFERER} !~ m#.*?://%{HTTP_HOST}(:3000)?/.*?#"
Apache 的文档没有太大帮助...
第一行使用-strmatch,据我所知不支持可选部分-类似于正则表达式(:3000)?。它只支持通配符 *,?和 []。我没有找到任何规格 - 从我的 exps * 匹配任何字符串,包括。空一个,?应该是任何单个字符,[] 可以用于类似于正则表达式的字符范围。
第二行使用正则表达式 (!~,=~),这很好,但我找不到将 HTTP_HOST 服务器变量插入其中的方法。
任何人都对如何在 strmatch 中具有可选部分或将服务器 var 插入正则表达式有一定的经验。
【问题讨论】:
标签: regex apache mod-rewrite hotlinking