我正试图closures一个网站给每个人,除了我的IP地址。 我几乎有它的工作。 我无法访问www.mysite.com,但是我可以访问其中有另一个.htaccess文件的所有文件夹。
我在/ www下面有一个.htaccess文件,代码如下:
#Use this when website is down RewriteEngine on #this allows access through my ip RewriteCond %{REMOTE_ADDR} !^(66\.777\.888\.99)$ RewriteRule !down.php$ /down.php [L]
我的网站中的一些文件夹中有.htaccess文件。 如果我有一个文件的行:
RewriteEngine on
我仍然可以访问该文件夹。 例如,如果我在/ www / about中有第二个.htaccess文件,那么我仍然可以访问mysite.com/about(但该页面上包含的.css文件实际上会加载down.php)。
如果我删除“RewriteEngine on”,我将被redirect到down.php。
有任何想法吗? 我认为我的mod_rewrite混淆了多个.htaccess文件。
谢谢!
怎么样放:
Order deny,allow Deny from all Allow from ip.ad.dre.ss
在你的.htaccess文件中? 甚至在系统宽的httpdconfiguration?
如果你可以达到你的(虚拟)主机configuration,为什么不添加这些线?
<Location /> Order deny,allow Deny from all Allow from 1.1.1.1 ErrorDocument 403 /down.php </Location> <Location /down.php> Order allow,deny Allow from all </Location>
检查你的apache日志文件是否有错误,有可能你会看到一个404 / about.php的地方。 否则,默认的Mod Rewritedebugging技巧如下:
尝试添加到您的httpconfiguration(在configuration中的某个地方,它不能在htaccess或虚拟主机级别)
RewriteLog /tmp/rewrite.log RewriteLogLevel 9
这将为你提供一个逐行的说明,试图匹配什么样的正则expression式,以及最终的决定是什么。
事后删除这些行,否则有一天,你会发现你没有像你应该那么多的磁盘空间…
感谢关于RewriteLog的提示。 我testing了它,它看起来像站点根目录中的.htaccess文件只适用于没有自己的.htaccess文件与行“RewriteEngine on”的目录。
注意,12.345.678.90是我的IP,和99.888 …是我想要允许看到的东西的IP。
12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b878d060/initial] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/ 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/index.html 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/index.cgi 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/index.pl 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879b090/subreq] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/index.php 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8791070/initial] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/css/about.css 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (3) [perdir /srv/www/mysite.com/] strip per-dir prefix: /srv/www/mysite.com/requires/css/header.css -> requires/css/header.css 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (3) [perdir /srv/www/mysite.com/] applying pattern 'down.php$' to uri 'requires/css/header.css' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (4) [perdir /srv/www/mysite.com/] RewriteCond: input='12.345.678.90' pattern='!^(99\.888\.777\.88)$' => matched 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (2) [perdir /srv/www/mysite.com/] rewrite 'requires/css/header.css' -> '/down.php' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b87df100/initial] (1) [perdir /srv/www/mysite.com/] internal redirect with /down.php [INTERNAL REDIRECT] 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] strip per-dir prefix: /srv/www/mysite.com/down.php -> down.php 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] applying pattern 'down.php$' to uri 'down.php' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] strip per-dir prefix: /srv/www/mysite.com/down.php -> down.php 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (3) [perdir /srv/www/mysite.com/] applying pattern '^(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])-((19|20)\d\d)/?(/([a-zA-Z0-9_-]{1,20}))?$' to uri 'down.php' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8790810/initial/redir#1] (1) [perdir /srv/www/mysite.com/] pass through /srv/www/mysite.com/down.php 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (3) [perdir /srv/www/mysite.com/login/] strip per-dir prefix: /srv/www/mysite.com/login/js/ajax_login.js -> js/ajax_login.js 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (3) [perdir /srv/www/mysite.com/login/] applying pattern '^([a-z0-9]+/?){0,3}$' to uri 'js/ajax_login.js' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b879d098/initial] (1) [perdir /srv/www/mysite.com/login/] pass through /srv/www/mysite.com/login/js/ajax_login.js 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (3) [perdir /srv/www/mysite.com/login/] strip per-dir prefix: /srv/www/mysite.com/login/images/ajax_busy.gif -> images/ajax_busy.gif 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (3) [perdir /srv/www/mysite.com/login/] applying pattern '^([a-z0-9]+/?){0,3}$' to uri 'images/ajax_busy.gif' 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (1) [perdir /srv/www/mysite.com/login/] pass through /srv/www/mysite.com/login/images/ajax_busy.gif 12.345.678.90 - [mysite.com/sid#b85a5dc8][rid#b8796080/initial] (1) [perdir /srv/www/mysite.com/about/] pass through /srv/www/mysite.com/about/images/edit.png
正如你所看到的,about / index.php页面包含一个位于/ requires的css文件。 上面,ip地址规则适用于css文件,并被redirect。 如果我把.htaccess文件放在/只需要一行,ip地址规则就会被跳过:
RewriteEngine on
在所有子文件夹的.htaccess文件中执行此操作。
RewriteEngine On RewriteOptions Inherit
查看更多: http : //httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteOptions
为什么不做ip检查与PHP?
可以看看 喜欢这个
< ?php if($_SERVER['REMOTE_ADRR'] != '66.777.888.99') exit; ? >