我需要通过Apache重写规则来保护网站。该网站有不同的门户网站,但都在同一个网络端口上运行,所以我不能通过防火墙这样做。门户网站之间的唯一区别是URL中的字符串。 Portal 1用于公共访问,Portal 2仅用于某些IP地址。
现在我需要提出管理它的RewriteConds和RewriteRules。我的想法是使用RewriteCond expr
来匹配客户端的IP地址,然后使用RewriteCond %{QUERY_STRING}
来匹配URL中的字符串。如果客户端的IP地址不在" expr"列表中,但尝试转到与该字符串匹配的URL,则会返回返回代码403。
以下字符串应完全匹配。
p=101
p=101:
p=WORD1
p=WORD2
网址如下所示:
https://host.domain.com/website/f?p=portal
门户网站将是101,101:,WORD1或WORD2。
这是我到目前为止所做的工作,但效果很好:
RewriteCond expr "! -R 'a.b.c.d/32'"
RewriteCond expr "! -R 'a.b.c.e/32'"
RewriteCond %{QUERY_STRING} p=(101\:?|WORD1|WORD2) [NC]
RewriteRule ^ - [L,R=403]
但是,这也匹配p = 1011,p = 10111,p = WORD1A,p = WORD2A等等。
我需要帮助来创建一个与上面列出的4个字符串完全匹配的正则表达式,但没有别的。我一直在谷歌搜索,也在这个页面上发现了几个问题,但无论我怎么做,都没有用。
非常感谢任何帮助。