tl; dr:如何在.conf或.htaccess文件中执行以下操作:
<IfApache22>
# Do A
</IfApache22>
<IfApache24>
# Do B
</IfApache24>
Run Code Online (Sandbox Code Playgroud)
更长的问题:
在Apache 2.4中,旧的Order被弃用而不是Require.
在我的.htaccess文件中
<FilesMatch "\.(long|list|file|types)$">
Order allow,deny
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
这意味着除非启用access_compat,否则Apache无法启动.虽然这样做提供了一个有用的解决方法,但我想要一个适用于这两种语法的解决方案,因为配置将分发给许多服务器.问题是如何检测Apache的当前版本并应用正确的指令.
我打算将该文件用于许多人分发和使用的框架,我无法控制/保证他们有或没有任何特定的服务器设置,这就是为什么我希望文件是2.2/2.4"不可知论".
小智 31
我用过的黑客.
# Apache 2.2
<IfModule !mod_authz_core.c>
Satisfy Any
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
Run Code Online (Sandbox Code Playgroud)
wei*_*dan 17
假设您安装了mod_version(默认情况下会发送许多发行版),您可以执行以下操作:
<IfVersion >= 2.4>
# Require ...
</IfVersion>
<IfVersion < 2.4>
# Order ...
# Deny ...
# Allow ...
</IfVersion>
Run Code Online (Sandbox Code Playgroud)
您可以在同一主机上运行不同版本的 Apache。问:单独的配置文件位于不同的目录中有什么问题?老实说,我相信这可能是最干净的方法......
不过,Apache .conf 文件允许使用<IfDefine>
,您可以在运行时使用“-D”指定:
http://httpd.apache.org/docs/2.0/mod/core.html#ifdefine
归档时间: |
|
查看次数: |
5898 次 |
最近记录: |