Apache 需要为某些查询字符串重写条件

Apache 需要为某些查询字符串重写条件,apache,mod-rewrite,Apache,Mod Rewrite,我需要通过Apache重写规则保护网站。该网站有不同的门户,但都在同一个web端口上运行,所以我不能通过防火墙来实现这一点。门户之间的唯一区别是URL中的字符串。门户1用于公共访问,门户2仅用于某些IP地址 现在我需要提出重写条件和重写规则来管理这一点。我的想法是使用RewriteCond expr匹配客户端的IP地址,然后使用RewriteCond%{QUERY_STRING}匹配URL中的字符串。如果客户机的IP地址不在“expr”列表中,但试图转到与字符串匹配的URL,则返回代码403 以

我需要通过Apache重写规则保护网站。该网站有不同的门户,但都在同一个web端口上运行,所以我不能通过防火墙来实现这一点。门户之间的唯一区别是URL中的字符串。门户1用于公共访问,门户2仅用于某些IP地址

现在我需要提出重写条件和重写规则来管理这一点。我的想法是使用
RewriteCond expr
匹配客户端的IP地址,然后使用
RewriteCond%{QUERY_STRING}
匹配URL中的字符串。如果客户机的IP地址不在“expr”列表中,但试图转到与字符串匹配的URL,则返回代码403

以下字符串应完全匹配

p=101
p=101:
p=WORD1
p=WORD2

URL如下所示:
https://host.domain.com/website/f?p=portal
其中portal应该是101、101:、WORD1或WORD2

以下是我目前所掌握的,效果很好:

RewriteCond expr”!-R'a.b.c.d/32''
重写第二个表达式“!-R'a.b.c.e/32'”
RewriteCond%{QUERY_STRING}p=(101\:?| WORD1 | WORD2)[NC]
重写规则^-[L,R=403]

但是,这也与p=1011、p=10111、p=WORD1A、p=WORD2A等匹配

我需要帮助来创建一个与上面列出的4个字符串完全匹配的正则表达式,但没有其他内容。我在谷歌上搜索了很多,在这个页面上也发现了一些问题,但不管我怎么做,都没有效果

非常感谢您的帮助