我想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}i
UseCanonicalName
%V
将使用。ServerName
Host
'%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
乍一看看起来不错,谢谢!