I have KOHANA_ENV
环境变量设置为DEVELOPMENT
例如。现在有一组规则,仅当该 var 设置为PRODUCTION
(打开 mod_deflate、设置过期标头默认值、关闭 ETag 等),例如:
if (KOHANA_ENV == PRODUCTION) {
// .. do stuff
}
有没有办法在 Apache 级别上做到这一点,或者最好有两个 conf 文件?
我在很棒的模块的帮助下做到了模组宏.
假设你有/etc/apache2/envvars
(对于类似 Debian 的发行版,它是存储 apache 环境变量的地方):
#export KOHANA_ENV=PROD
export KOHANA_ENV=DEV
您根据生产或开发的情况[取消]评论。
在另一边,您有 VirtualHost,或者只是用宏定义的一部分。宏是用一些变量编写通用配置部分的方法。我将它用于完整的虚拟主机,但这里有一个仅包含虚拟主机的一部分的示例。我们将使用环境变量来决定使用哪个宏(关键字Use):
<Virtualhost *:80>
ServerName foobar.com
#(...)
Use EnvStuff_${KOHANA_ENV} /tmp
#(...)
这里宏接受一个参数(tmp 目录路径),这不是义务。
那么你应该只定义2个不同的宏,其中环境变量是宏名称的一部分环境材料_PROD & 环境材料_DEV:
<Macro EnvStuff_PROD $tmp>
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
</IfModule>
<IfModule mod_headers.c>
Header set MyHeader "Hello this is PRODUCTION envirronment. It took %D microseconds for Apache to serve this request."
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
#(...)
</IfModule>
php_admin_value upload_tmp_dir $tmp/upload
#(... other php settings for production)
</Macro>
<Macro EnvStuff_DEV $tmp>
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive Off
</IfModule>
<IfModule mod_headers.c>
Header set MyHeader "Hello this is DEVELOPMENT envirronment. It took %D microseconds for Apache to serve this request."
</IfModule>
php_admin_value upload_tmp_dir $tmp/upload
</Macro>
在这些示例中,您可以检查响应中的标头,您将轻松看到它是否适合您。
注意,环境变量设置不好,会出现一些问题,也许你可以创建一个宏环境材料_还有:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)