web-dev-qa-db-ja.com

マルチサイト用に別々のApacheログファイルを使用する

しばらく前に、私はBloggerを離れ、私のブログを自分のシステムにダウンロードしました。私はしばらくの間VirtualHostとしてそれぞれのブログでそこにそれらをホストしました。後で、私はそれらをWordPressにインポートし、WPからホストしています。

仮想ホストとしてローカルにホストしていたときは、それぞれが別々のApacheログファイルを使用していましたが、現在はすべてのブログが同じファイルに記録されています。

私はWordPressで設定を見つけることができません、そしてサイトが仮想であるので.htaccessファイルでそれを指定する方法がありません。つまり、WordPressブログは実際にはドライブ上に別々のディレクトリとして配置されていません(それ以外に、ログ設定を.htaccessで使用することはできません)。

1つまたは複数のサイトが独自のログファイルにログを記録するように、WordPressマルチインストールをどのように設定できますか?

toEnchoによるSetEnvIfの2番目の提案は有望です。 1つのサイトへのアクセスを別のログファイルに保存し、下記のディレクティブを使用してメインログから除外することができました。

…
<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という名前のファイルにすべてのブログアクセスを含むログを書きます。

3
Synetech

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
1
fuxia