htaccess阻止了流量,但现在服务器本身无法访问

时间:2014-01-30 14:42:39

标签: php apache .htaccess

我有一个网站从子域运行它的CMS。 CMS受密码保护,但由于我的公司有固定的IP,我还想阻止所有未在公司内访问CMS的人。

所以我将以下内容添加到子域的.htaccess文件中:

Allow from 1.2.3.4
Deny from all

1.2.3.4是我假的固定公司IP

这很好用,但是我在CMS中运行的脚本没有崩溃,因为它们出现 403 Forbidden 错误。例如,在使用php函数getimagesize()时会发生这种情况。

Warning: getimagesize(http://sub.domain.com/img/image.jpg) 
[function.getimagesize]: failed to open stream: HTTP request failed! 
HTTP/1.1 403 Forbidden in /path/to/file/sub.domain.com/fpdf.php on line 1350

我怎样才能解决这个问题?

此外,我想知道如何将没有IP 1.2.3.4的所有人重定向到http://www.domain.com

2 个答案:

答案 0 :(得分:2)

您还需要添加localhost

Allow from 1.2.3.4
Allow from 127.0.0.1
Deny from all

答案 1 :(得分:0)

您可以使用mod_rewrite规则进行更精细的控制,将用户重定向到允许的IP列表之外的主页。

RewriteEngine On

RewriteCond %{REMOTE_ADDR} !^(1\.2\.3\.4|127\.0\.0\.1)$
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule .+ http://www.domain.com/? [L,R]

我还添加了127.0.0.1(localhost),您可以在允许列表中添加任意数量的内部IP。