httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier>
Subject Re: [users@httpd] LocationMatch inside VirtualHost? [solved: bug]
Date Tue, 14 Apr 2009 13:45:10 GMT
Viaduct Productions wrote:
As much as by now the subject has become inappropriate, if you change it 
in the middle, it becomes very hard for people to follow.
So I'll restore the original one.
By marking [OT], I was talking about the other discussion about how bad 
Apache and the documentation and the people on this list are etc..

So, to get back to the real subject :

> "NameVirtualHost 8:80 has no VirtualHosts", to me, conflicts with "*:80 
> is a NameVirtualHost".

It does not really.  The message
NameVirtualHost *:80 has no VirtualHosts
is relative to one line
NameVirtualHost *:80
(the superfluous one that lingers somewhere), which does not have 
corresponding/matching <VirtualHost ..> sections.

The second message
*:80 is a NameVirtualHost
is maybe not the most explicit, but it corresponds to the other line
NameVirtualHost *:80
which /does/ have corresponding <VirtualHost ..> sections that seem to 
match it.

That is probably because Apache, as it (sequentially) reads the 
configuration files (starting with httpd.conf), then finding in there 
"Include some_other_file" directives, finds
a) a first "NameVirtualHost *:80" somewhere,
and then
b) a second "NameVirtualHost *:80" line, without having seen in-between, 
<VirtualHost> sections that would correspond to the first 
"NameVirtualHost *:80".
So it warns you that something is missing there.
c) after it finds the second "NameVirtualHost *:80" line however, it 
does find your corresponding <VirtualHost> sections, so it is happy then.

Is that clearer ?

   My vhosts are registering twice in apachectl
> -S.

Now that is interesting.  It would tend to confirm the guess that 
somewhere, you have a duplicated "Include" directive, which somehow 
reads a certain configuration file one too many times.

> Very little of this makes any sense.
I can assure you that it most probably does make a lot of sense.
It is just that you are still overlooking something that would make it 
all fall into place logically.

Maybe this :
Apache basically has only /one/ configuration file, the one indicated by 
the initial "-f" command-line parameter of the httpd program. By default 
that is "httpd.conf" in the ServerRoot directory.
But on different platforms, depending on the Apache distribution, it may 
be another name somewhere else.
Anyway, Apache starts there, and basically sticks with that file.
Only, whenever in that file it finds an "Include" directive, it will 
read the included file (or files) at that point, just as if the content 
of that included file(s) had been in httpd.conf in the first place.
If in the included file(s), there is another "Include", it will do this 
again, recursively.  When it gets to the end of the included file(s), it 
resumes with the next line of the current file, just after the "Include".
What you may have overlooked, is a line like
Include /some/directory/*.conf
which would read /all/ the *.conf files present in that directory, at 
this point.
Then later there is an
Include /some/directory/somefile.conf
(from the same directory) and oops, the same file is read and included 

And it just happens that this file starts with a "NameVirtualHost *:80".

The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:> for more info.
To unsubscribe, e-mail:
   "   from the digest:
For additional commands, e-mail:

View raw message