使用 mod_rewrite 关闭网站

使用 mod_rewrite 关闭网站

我正在尝试关闭一个网站,只允许我的 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”,我会被重定向到 down.php。

有什么想法吗?我认为我的 mod_rewrite 与多个 .htaccess 文件混淆了。

谢谢!

答案1

那么如何放置:

Order deny,allow
Deny from all
Allow from ip.ad.dre.ss

在你的.htaccess文件中?还是在系统范围的 httpd 配置中?

答案2

如果您可以访问您的(虚拟)主机配置,为什么不添加这些行?

<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>

答案3

检查您的 apache 日志文件是否有错误,您可能会在某处看到 about/down.php 的 404。否则,默认的 Mod Rewrite 调试提示如下:

尝试将其添加到您的 http 配置中(在配置中的某处,它在 htaccess 或虚拟主机级别不起作用)

RewriteLog /tmp/rewrite.log
RewriteLogLevel 9

这将逐行解释它尝试匹配什么正则表达式以及最终的决定是什么。

然后删除这些行,否则有一天你会发现你的磁盘空间并没有你想象的那么多……

答案4

在所有子文件夹 .htaccess 文件中执行此操作。

RewriteEngine On
RewriteOptions Inherit

查看更多:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteOptions

相关内容