在htaccess中只允许某些ip和引用

时间:2012-12-26 19:25:42

标签: apache .htaccess referrer

我有一个Apache htaccess规则集,允许访问某些IP地址,非常适合在维护模式下工作。但是,这也阻止了一些像wordpress.com或google.com这样的推荐人访问该网站。当前的规则集是:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123

RewriteCond %{HTTP_REFERER} wordpress\.com [NC, OR]
RewriteCond %{HTTP_REFERER} google\.com [NC]
RewriteCond %{HTTP_REFERER} ^(.*)$
RewriteRule .* /maintenance.html [R=302]

RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]

以上规则集有效,但有一个小故障并不完美。不知何故,网站可以从任何IP访问,推荐人是不可能的。我需要一个规则集,允许从某些IP和某些引用者访问网站。

1 个答案:

答案 0 :(得分:1)

在我看来就像线

RewriteCond %{HTTP_REFERER} ^(.*)$

匹配任何内容,使其余条件静音。那条线是什么?

此外,虽然您正在做的事情可能适用于您的目的,但请注意,使用虚假的referer [sic]标头创建请求并不困难。

此外,如果您的目标是允许那些特定的引用者并将其余部分提交到“maintenance.html”,那么我认为您希望为引用者否定匹配条件。但我可能会误解你的意图。

相关问题