【问题标题】:Deactivate directory listing for all but LAN htaccess停用除 LAN htaccess 之外的所有目录列表
【发布时间】:2014-01-06 01:05:26
【问题描述】:

我想使用 htaccess 停用除我的本地 IP 之外的所有目录列表。

这工作正常,但仅适用于一个IP 地址:

    # deactivate directory listing if not coming from local
    Options -Indexes
    <If "%{REMOTE_ADDR} == '192.168.188.44' ">
      Options +Indexes
    </If>

我将如何处理来自192.168.* 的所有IP 地址?

我在我的 Windows 上使用 Apache2 2.4.4,目前在我的 ubuntu 服务器上使用 2.2.2。 显然,上面的代码块在Apache2 2.4 之前不起作用。 因此,如果一些 sn-p 可以在两个系统上工作,那就太好了。

提前致谢。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite apache2


    【解决方案1】:

    您可以通过 mod_rewrite 在较旧/较新的 Apache 版本中执行此操作。

    将此代码放入您的DOCUMENT_ROOT/.htaccess 文件中:

    RewriteEngine On
    
    RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
    RewriteCond %{REMOTE_ADDR} !^192\.168\.
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [F]
    

    【讨论】:

    • 我在发帖前已经测试过了。确保这是第一条规则并放在DOCUMENT_ROOT/.htaccess
    • 发现错误:我正在通过我的路由器(没有 VPN,通过 dyndns)连接到此服务器,因此它一定认为我来自本地网络。我用我的实时服务器检查了你的 sn-p,它工作正常,因此你的答案是正确的。
    • 或者..我对照在线测试人员检查了 htaccess。它说 REMOTE_ADDR 不可用。但我不明白? root@raspberrypi:/var/www# apache2 -v 服务器版本:Apache/2.2.22 (Debian) 服务器构建:2013 年 3 月 10 日 05:34:48 root@raspberrypi:/var/www# a2enmod rewrite 模块重写已启用 如何这可以吗?有什么想法吗?
    • 在线测试仪不是测试这条规则的方法。在你的网络服务器上测试它(我已经测试过了)
    • 确定它的 IP 地址。 REMOTE_ADDR 是本地 LAN IP,这就是它不起作用的原因。 (用PHP检查过)愚蠢的DYNDNS:D。还是非常感谢。那就得想​​点别的了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2015-06-27
    • 2011-03-11
    • 2010-11-06
    相关资源
    最近更新 更多