我想CustomLog在我的apache配置中添加一条指令,以记录所请求的完整URL(或至少URL的主机部分)。我有几个域由同一个apache实例处理,并且希望能够区分日志中的域(因为我现在看到的只是“ GET /”)。我在LogFormat的文档中看到它列出%U来打印URL的路径部分,但我正在寻找主机。
我想CustomLog在我的apache配置中添加一条指令,以记录所请求的完整URL(或至少URL的主机部分)。我有几个域由同一个apache实例处理,并且希望能够区分日志中的域(因为我现在看到的只是“ GET /”)。我在LogFormat的文档中看到它列出%U来打印URL的路径部分,但我正在寻找主机。
Answers:
继续阅读LogFormat文档,您会发现:
%...{Foobar}i: The contents of Foobar: header line(s) in the request
sent to the server.
这意味着您可以在配置中包括:
%{Host}i
该%v和%V指令也可以得到你想要的东西。
%v将始终是ServerName(虚拟主机的“规范名称”)的值。 %V 可以是的值ServerName,也可以是HTTP Host标头的值,具体取决于您是否已UseCanonicalName在配置中启用(以及客户端是否提供了Host标头)。
%V等同?%{Host}iUseCanonicalName
%V将使用。ServerNameHost
'%v'是您想要的ServerName吗?
%v在我的情况下,看起来总是返回相同的字符串:ServerName值,而不管URL中出现哪个域。但是%V看起来它做对了。
添加%v到您的日志格式。
像这样:
LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost
%v在我的情况下,看起来总是返回相同的字符串:ServerName值,而不管URL中出现哪个域。但是%V看起来它做对了。
%{Host}i工作即使对于HTTP / 1.0?%V乍一看看起来不错,谢谢!