对多站点使用单独的阿帕奇日志文件

时间:2012-04-06 作者:Synetech

不久前,我离开了Blogger,将我的博客下载到我的系统中。有一段时间,我以虚拟主机的身份在每个博客上主持了他们。后来,我将它们导入WordPress,现在正从WP托管它们。

当我将它们作为虚拟主机本地托管时,我让每个博客都使用一个单独的Apache日志文件,但现在,所有博客都记录到同一个文件中。

我在WordPress中找不到设置,也无法在.htaccess 文件,因为站点是虚拟的。也就是说,WordPress博客实际上并不作为单独的目录位于驱动器上-(此外,日志设置不能用于.htaccess 无论如何)。

如何配置WordPress多重安装,以便一个或多个站点登录到自己的日志文件?

托肖关于使用setenif的第二个建议很有希望。我设法让它在一个单独的日志文件中访问一个站点,并使用下面的指令将其从主日志中删除。

…
<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.

1 个回复
SO网友:fuxia

你可以设置custom logs 在您的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

结束

相关推荐

管理WordPress MultiSite中的数据库表

我正在开发一个插件,它可以在数据库表中创建和存储一些数据(使用global$wpdb->base\\u前缀)。在WordPress multisite中,我希望子网站所有者只能访问他们创建的数据。处理这个问题的最佳方法是什么?我应该为每个子网站创建新表,还是向表中添加“blog\\u id”列并每次检查?谢谢你的帮助。