除了特定的{querystring} / $ _ GET之外,.htaccess禁止所有人

时间:2011-01-20 01:37:59

标签: php .htaccess mod-rewrite

前言:我知道这有点安全漏洞,但我想要一个htaccess解决方案

我有一个半私有wiki(php,mysql,mediawiki),我只想允许特定范围的IP,除非文章标题为 title =公开(允许所有) public_articleName #### 我相信 ^ title = public_articleName([0-9] {4})$

我还在顶级htaccess中使用重写规则,以便美化网址(www.site.com/wiki/article实际上是www.site.com/wiki/index.php?title=article)在我的情况下我希望www.site.com/wiki/被(部分)禁止,但是所有人都可以看到www.site.com/wiki/public_articleName2345

有什么想法吗?我知道您可以访问%{QUERY_STRING},但我不知道基于该匹配强制403(IPs xxx.xxx.xx.xxx除外)

感谢您的输入

编辑:澄清

1 个答案:

答案 0 :(得分:1)

您可以在RewriteRules上使用[forbidden]标志:

RewriteRule  index.php?title=disallow  forbid.html  [F]

您可以将其与RewriteCond组合以匹配IP,或阻止此规则应用于允许的网页。

RewriteCond  ${REMOTE_ADDR}  !78.22.131.219
RewriteRule  index.php?title=disallow  forbid.html  [F]    

这里有一些注意事项:https://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-to-ask

然而,在wiki软件中以编程方式实现这一点会更容易。