一段时间前,我离开博客,并下载我的博客到我的系统。有一段时间,我将它们作为VirtualHost与每个博客一起托管在那里。后来,我把它们导入到WordPress中,现在就从WP中托管它们。
当我将它们作为虚拟主机在本地托管时,我让每个人使用一个单独的Apache日志文件,但是现在,所有的博客都被记录到同一个文件中。
我在WordPress中找不到一个设置,而且由于站点是虚拟的,所以无法在.htaccess
文件中指定它。也就是说,WordPress博客实际上并不是作为单独的目录在驱动器上定位的(此外,日志设置无论如何也不能在.htaccess
中使用)。
如何配置WordPress多个安装,以便一个或多个站点将日志记录到自己的日志文件中?
toscho关于使用SetEnvIf的第二个建议很有希望。我设法让它将对一个站点的访问放在一个单独的日志文件中,并使用下面的指令将其排除在主日志之外。
…
<IfModule log_config_module>
…
# I’m re-using the dontlog environment variable because there is no reason to make a special variable (for me), so it avoids having to use an expression (plus, it just makes sense)
SetEnvIf Request_URI "^/blogs" dontlog
SetEnvIf Request_URI "^/blogs/blog1" blog1
SetEnvIf Request_URI "^/blogs/foobar" foobar
…
CustomLog "../Logs/Main/access.log" common env=!dontlog
CustomLog "../Logs/Blogs/blog1.log" common env=blog1
CustomLog "../Logs/Blogs/foobar.log" common env=foobar
…
UnsetEnv dontlog
UnsetEnv blog1
UnsetEnv foobar
</IfModule>
…
这对于单个站点的博客是有效的,但是对于多站点来说,问题在于试图保持整洁,并简化添加新博客,因为在日志文件名中不可能像下面这样使用变量,这意味着为每个博客创建一个单独的条目:
…
<IfModule log_config_module>
…
SetEnvIf Request_URI "^/blogs" dontlog
# Set environment variable to matched regex subexpression corresponding to blog name
SetEnvIf Request_URI "^/blogs(.+/)" blog=$1
…
CustomLog "../Logs/Main/access.log" common env=!dontlog
CustomLog "../Logs/Blogs/%{blog}e.log" common env=blog
…
UnsetEnv dontlog
UnsetEnv blog
</IfModule>
…
最后,在一个名为%{blog}e.log
的文件中包含所有博客访问的日志。
发布于 2012-04-06 04:05:04
您可以根据自定义日志变量在您的httpd-vhosts.conf
中设置HTTP_HOST
--如果您的服务器是Apache,并且您为每个站点使用子域。
对于子目录(未测试):
SetEnvIf Request_URI ^sitename1 sitename1
SetEnvIf Request_URI ^sitename2 sitename2
CustomLog sitename1.log common env=sitename1
CustomLog sitename2.log common env=sitename2
https://wordpress.stackexchange.com/questions/48156
复制相似问题