我正在尝试限制/消除重复。
根据我对某些 LAMP 托管提供程序(特别是在共享服务器上)的(有限的)理解,有一些PHP-ini指令在PHP脚本中设置时会被忽略,但在以下情况下会被接受在.htaccess
中设置;处理流程应该非常简单:
mod_php*
-并设置一个环境变量(如果找到)php_value
条指令一次目标是保留所有内容,除非PHP可用于根据配置按每个用户/机器人/ api / etc处理请求。 ..并且由此显然不能将任何PHP代码用作文本O_o
我不知道为什么这要变得更复杂,但是我拒绝接受我必须将php_value
指令的(长)列表重复4次-仅仅是因为Apache-conf也是如此(强制删除)以处理最简单的逻辑条件..(工作台)..或者我只是对Apache-conf不太了解,请帮忙;下面的代码引发 400 错误,除非我为每个php版本复制了每个代码块-并且每个托管服务提供商都有自己的mod_php *后缀-for PHP-version-hot,否则我无法正常工作-切换。
以下是[bl / thr]的内容:
<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>
答案 0 :(得分:1)
但是,下面的代码有效。请注意:
<IfModule mod_authz_core.c>
用于验证Apache2.4-用于<If>
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>