是否可以从apache设置会话变量?
我的意思是我有
<VirtualHost *:80>
ServerName www.domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/domain/
</VirtualHost>
指向主站点,然后我想为打开子域名的用户 en.domain.com,加载语言文件EN等等。
<VirtualHost *:80>
ServerName en.domain.com
ServerAlias en.domain.com
DocumentRoot /var/www/domain/ [????]
</VirtualHost>
如何从此配置文件传递任何var? 或者我该怎么设置它?其他方案?谢谢!
答案 0 :(得分:4)
您可以在apache中使用SetEnv,在php中使用getenv。这会将一个变量从Apache传递到PHP,但是在$ _SESSION中设置它是没有意义的,因为来自apache的值有点静态。
// in apache
SetEnv VARNAME myvalue
// in php
echo getenv('VARNAME');
答案 1 :(得分:1)
$ _ SERVER [“HTTP_HOST”]会显示此信息,但$ _SERVER [“HTTP_ACCEPT_LANGUAGE”]可能是您手头问题的更好选择。
答案 2 :(得分:1)
您可以设置environment variable然后可以通过PHP访问。 vhost配置看起来像这样:
SetEnv UNIQUE_ENV_VAR_NAME yourValue
然后在PHP中
if (isset($_SERVER['UNIQUE_ENV_VAR_NAME'])) {
executeYourCode();
}
答案 3 :(得分:1)
您可以使用mod_env在配置中设置环境变量:
<VirtualHost *:80>
ServerName en.domain.com
ServerAlias en.domain.com
DocumentRoot /var/www/domain/
SetEnv LANG en
</VirtualHost>
然后你可以从PHP中选择它们:
$lang = getenv('LANG');
答案 4 :(得分:0)
正如其他人已经回答的那样,mod_env就是一个答案。另一种可能性是使用mod_rewrite,您可以组合许多虚拟主机....例如:
RewriteEngine On
RewriteCond %{SERVER_NAME} ^([^.]*)\.domain\.com$
RewriteRule ^.*$(subdomain)? - [E=SUBDOMAIN:%1]