.htaccess规则按IP地址

时间:2014-01-16 19:23:34

标签: php .htaccess access-control

我正在寻找一种方法来在IP或主机名的基础上启用一些.htaccess规则(希望使用正则表达式)。这遍及stackoverflow,但我找不到任何适用于规则块的通用规则(事实上,这可能不是.htaccess如何工作。我&#39 ;我不确定!)。

我不需要重写规则。我不需要访问/拒绝标志。我只是想在一些服务器上更改一些开发IP地址的PHP标志和文件行为。

例如,启用调试模式/ error_log /

<magical_ip_filter_tag "123.456.78.901">
  php_flag display_startup_errors on
  php_flag display_errors on
  php_flag html_errors on
  php_flag log_errors on
  php_value error_log  /home/path/public_html/domain/PHP_errors.log
</magical_ip_filter_tag>

请注意,我不需要用于PHP调试的PHP解决方案,这只是一个示例。

1 个答案:

答案 0 :(得分:1)

您通常会发现很多评论/帖子说这是不可能的。在较新的Apache版本(2.4及更新版本)中,这很容易实现。

但是在较旧的Apache上2.2*这是我用作解决方案

的内容
  1. 创建/index.php的符号链接,并使用此命令将其命名为/myinde.php

    ln -s index.php myindex.php
    
  2. DocumentRoot/.htaccess

    中添加此代码
    RewriteCond %{REMOTE_ADDR} ^123\.456\.78\.901$
    RewriteRule !^myindex.php/ myindex.php%{REQUEST_URI} [L]
    
    <Files myindex.php>
      php_flag display_startup_errors on
      php_flag display_errors on
      php_flag html_errors on
      php_flag log_errors on
      php_value error_log  /home/path/public_html/domain/PHP_errors.log
    </Files>
    
  3. RewriteRule将您IP地址的所有请求转发至/myindex.php,使原始URI可用PATH_INFO

    然后对文件<Files myindex.php>执行myindex.php内的代码块。