我有一个由多个域使用的PHP应用程序。为了避免维护多个vhost,我只设置了一个“默认”Apache vhost来将任何传入的请求定向到服务器到应用程序目录。
我想要做的是根据命中服务器的主机名动态设置Apache访问和错误日志路径。
例如,我想将日志路径设置为:
/var/log/application_name/example.com/error.log
/var/log/application_name/example.com/access.log
向example.com
发出请求时。
有可行的方法吗?我已经看过使用任何Apache环境变量,但是因为这些是在捕获请求时设置的,所以我认为这些变量不能用于ErrorLog或CustomLog指令。是不是我只需要在应用程序级别手动设置日志目录(即在PHP中)?
由于
答案 0 :(得分:6)
我使用这样的设置,我的logsplit.sh脚本根据%U写入日志文件:
<VirtualHost *:80>
ServerName myserver.com
ServerAlias *.myserver.com
VirtualDocumentRoot /home/%1/www/
LogFormat "%U %h %l %u %t \"%r\" %>s %b" common
CustomLog "|/usr/local/logsplit.sh" common
</VirtualHost>
答案 1 :(得分:-1)
您只需使用ServerAlias
为多个域维护1个VirtualHost,即可使用VirtualHosts执行此操作:
<VirtualHost *:80>
ServerAdmin ...
ServerName domain1.bla.com
ServerAlias service.bla.com domain5.domain.xxx
DocumentRoot /www/vhosts/xxx/public
ErrorLog /www/vhosts/xxx/log/error.log
CustomLog /www/vhosts/ccc/log/access.log combined
LogLevel warn
<Directory "/www/vhosts/ccc/public">
Options FollowSymLinks MultiViews
php_admin_flag safe_mode On
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>