【问题标题】:htaccess - detect mod_phphtaccess - 检测 mod_php
【发布时间】:2019-02-22 12:00:53
【问题描述】:

我正在尝试限制/消除重复。

根据我对一些 LAMP 托管服务提供商(尤其是在共享服务器上)的(有限)理解,有一些 PHP-ini 指令在 PHP 脚本中设置时会被忽略,但在以下情况下会被接受设置在.htaccess;流程应该很简单:

  • 检测任何mod_php* - 如果发现则设置环境变量
  • 检查此环境变量并将所有php_value 指令设置一次
  • 将所有请求重定向到PHP,根据配置处理请求

目标是保留所有内容,除非 PHP 可以根据配置处理请求——每个用户/bot/api/etc。 ..这显然不提供任何PHP代码作为文本O_o

我不知道为什么这必须更复杂,但我拒绝接受我必须重复 4 次 php_value 指令的(长)列表 - 只是因为 Apache-conf 太(咒骂删除)来处理最简单的逻辑条件..(face-desk)..或者我可能对Apache-conf不够了解,请帮忙;下面的代码会引发 400 错误,除非我为每个 php-version 复制每个块 - 以及每个托管服务提供商自己的 mod_php*suffix -for PHP-version-hot,否则我无法让它工作-切换。

这是 [bl/thr]ows:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    <IfModule mod_php_null.c>
        SetEnv MODPHP 1
    </IfModule>
    <IfModule mod_php5.c>
        SetEnv MODPHP 1
    </IfModule>
    <IfModule mod_php7.c>
        SetEnv MODPHP 1
    </IfModule>

    <If "%{ENV:MODPHP} =1">
        php_value expose_php          Off
        php_value short_open_tag      On
        php_value display_errors      On
        php_value max_execution_time  60
        php_value default_charset     UTF-8
        # list shortened for brevity

        RewriteCond %{DOCUMENT_ROOT}/.auto.php -f
        RewriteRule ^(.*)$ .auto.php [L]
    </If>
</IfModule>

【问题讨论】:

    标签: .htaccess conditional-statements detect apache2.4 mod-php


    【解决方案1】:

    但是,下面的代码有效;请注意:

    • &lt;IfModule mod_authz_core.c&gt; 用于验证 Apache2.4 -for &lt;If&gt;
    • RewriteRule用于定义变量
    • REDIRECT_ (有条件地)作为变量名的前缀
    • RewriteCond %{ENV:MODPHP} ^1$ 用于测试变量是否为1

    <IfModule mod_rewrite.c>
        <IfModule mod_authz_core.c>
            RewriteEngine On
            RewriteBase /
    
            <IfModule mod_php_null.c>
                RewriteRule .* - [E=MODPHP:1]
            </IfModule>
            <IfModule mod_php5.c>
                RewriteRule .* - [E=MODPHP:1]
            </IfModule>
            <IfModule mod_php7.c>
                RewriteRule .* - [E=MODPHP:1]
            </IfModule>
    
            <If "%{ENV:REDIRECT_MODPHP} =1">
                php_value expose_php          Off
                php_value short_open_tag      On
                php_value display_errors      On
                php_value max_execution_time  60
                php_value default_charset     UTF-8
            </If>
    
            RewriteCond %{ENV:MODPHP} ^1$
            RewriteCond %{DOCUMENT_ROOT}/.auto.php -f
            RewriteRule ^(.*)$ .auto.php [L]
        </IfModule>
    </IfModule>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2023-04-10
      • 1970-01-01
      • 2013-10-25
      • 2013-05-27
      • 1970-01-01
      相关资源
      最近更新 更多