使用.htaccess中的空格访问env变量

时间:2018-06-29 06:28:28

标签: linux .htaccess ubuntu

我在/ etc / environment中定义了环境变量,并在.htaccess中访问了这些变量以设置环境变量。除了具有空格的变量以外,所有变量都工作正常。

示例:

在我的/ etc /环境中

export SITE_NAME=Bliss
export SITE_IDENTITY=Bliss Five

在.htaccess中

SetEnv SITE_NAME ${SITE_NAME} #This works fine SetEnv SITE_IDENTITY ${SITE_IDENTITY} #This variable is causing an error

由于变量值中的空格,此处SITE_IDENTITY变量引起错误。

我尝试了以下不起作用的方法:

export SITE_IDENTITY="Bliss Five" export SITE_IDENTITY=Bliss\ Five

2 个答案:

答案 0 :(得分:0)

如果使用此方法,则需要在每次更改(/ etc / environment)时重新启动apache2,因为您需要将/ etc / environment加载到/ etc / apache2 / envvars中,该文件仅在启动时加载apache2。

/ etc / environment中的字符串需要用引号引起来。

我建议仅在.htacesss中设置它,通常在虚拟主机上随每个请求一起加载。

另一方面,当站点变大并且更好地禁用加载.htaccess(通过AllowOverride None)并将其直接通过include设置为vhost配置时,它会遇到一些性能问题。这样,您只需要在每次更改时重新加载配置,而无需重新启动,这比您拥有的解决方案更好。

root@frenkye:/home/www/pinkas.it/subdomains/stack$ cat /etc/environment
export SITE_NAME=Bliss
export SITE_IDENTITY="Bliss Five2"
root@frenkye:/home/www/pinkas.it/subdomains/stack$ cat /etc/apache2/envvars
# envvars - default environment variables for apache2ctl
. /etc/environment

答案 1 :(得分:0)

我通过以下更改解决了此问题:

在我的/ etc / environment环境中,我使用引号表示具有空格的变量值。

export SITE_NAME=Bliss export SITE_IDENTITY="Bliss Five"

在.htaccess中,我也对带空格的变量使用了引号

SetEnv SITE_NAME ${SITE_NAME} #This works fine SetEnv SITE_IDENTITY "${SITE_IDENTITY}" #This works fine now

这解决了我的问题。干杯!!!