Utilizarea fișierelor de log separate Apache pentru WordPress multisite
În urmă cu ceva timp, am părăsit Blogger și am descărcat blogurile mele pe sistemul meu. Le-am găzduit acolo cu fiecare blog individual ca VirtualHost pentru o vreme. Mai târziu, le-am importat în WordPress și acum le hostez din WP.
Când le hostam local ca virtual hosts, fiecare folosea un fișier de log Apache separat, dar acum toate blogurile sunt înregistrate în același fișier.
Nu găsesc o setare în WordPress și nu există nicio modalitate de a o specifica într-un fișier .htaccess
deoarece site-urile sunt virtuale. Adică, blogurile WordPress nu sunt de fapt localizate pe disc ca directoare separate (în plus, setările de log nu pot fi folosite în .htaccess
oricum).
Cum poate fi configurată o instalație WordPress multi-site astfel încât unul sau mai multe site-uri să înregistreze în propriul lor fișier de log?
Sugestia lui toscho de a folosi SetEnvIf este promițătoare. Am reușit să obțin accesul la un site într-un fișier de log separat și să-l exclud din log-ul principal folosind directivele de mai jos.
…
<IfModule log_config_module>
…
# Folosesc din nou variabila de mediu dontlog deoarece nu este nevoie să creez o variabilă specială (pentru mine), astfel evit să folosesc o expresie (plus, are sens)
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>
…
Aceasta funcționează pentru un blog cu un singur site, dar pentru multisite, problema este încercarea de a păstra lucrurile organizate și de a simplifica adăugarea de bloguri noi deoarece se pare că nu este posibil să folosești variabile în numele fișierelor de log, așa cum urmează, ceea ce înseamnă să faci o intrare separată pentru fiecare:
…
<IfModule log_config_module>
…
SetEnvIf Request_URI "^/blogs" dontlog
# Setează variabila de mediu la subexpresia regex corespunzătoare numelui blogului
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>
…
Am obținut un log care conține accesul la toate blogurile într-un fișier numit %{blog}e.log
.

Poți configura jurnale personalizate în fișierul tău httpd-vhosts.conf
în funcție de variabila HTTP_HOST
– dacă serverul tău este Apache și folosești subdomenii pentru fiecare site.
Pentru subdirectoare (netestat):
SetEnvIf Request_URI ^sitename1 sitename1
SetEnvIf Request_URI ^sitename2 sitename2
CustomLog sitename1.log common env=sitename1
CustomLog sitename2.log common env=sitename2

Cum am spus, asta am făcut înainte să trec la WordPress. Acum nu va funcționa deoarece site-urile din wpmu nu există în foldere pe disc sau ca gazde virtuale în Apache: blah.com/blogs/foo
, blah.com/blogs/bar
.
