RewriteCond需要某些QUERY_STRING

时间:2017-04-19 10:28:08

标签: apache mod-rewrite

我需要通过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个字符串完全匹配的正则表达式,但没有别的。我一直在谷歌搜索,也在这个页面上发现了几个问题,但无论我怎么做,都没有用。

非常感谢任何帮助。

0 个答案:

没有答案