meerdere sites

Status
Niet open voor verdere reacties.

bas1278

Gebruiker
Lid geworden
31 mrt 2009
Berichten
139
ik heb XAMPP en ik zou meerdere sites willen hebben.
dus als ik in me browser typ site1.nl of site2.nl
dat de eerste link dan naar \htdocs\site1 gaat
en de tweede naar \htdocs\site2 gaat
weet iemand hoe ik dit moet doen?
 
Zoek op Internet naar VirtualHost
Is een ingang in httpd.conf (of in een ander .conf bestand dat in httpd.conf wordt aangeroepen).

Het gaat (voor jouw vraag) vooral om Servername, evt. ServerAlias i.c.m. met een bijbehorende Documentroot.

In de submap Extra van de conf map (waar httpd.conf staat) vind ik httpd-vhosts.conf met voorbeelden van VirtualHosts. Een citaat daaruit, zelf aangepast zodat het hopelijk duidelijk(er) voor je is:

<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.blah.nl
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host.blah.nl"
ServerName dummy-host.blah.nl
ServerAlias www.dummy-host.blah.nl
ErrorLog "logs/dummy-host.blah.nl-error.log"
CustomLog "logs/dummy-host.blah.nl-access.log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@lekkerdan.nl
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/lekkerdan.nl"
ServerName lekkerdan.nl
ServerAlias www.lekkerdan.nl
ErrorLog "logs/lekkerdan.nl-error.log"
CustomLog "logs/lekkerdan.nl-access.log" common
</VirtualHost>

Succes,

Tijs.
 
Laatst bewerkt:
'k heb dit ingevuld en opgeslagen

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/xampp/xampp/htdocs/site2"
ServerName site2.localhost
ServerAlias www.site2.localhost
ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
</VirtualHost>

maar als ik dat doe en apache opnieuw opstart dan geeft hij bij site2.localhost een "kan server niet vinden"

en bij localhost een die pagina van htdocs\site2\index.html
 
Da's niet zo raar: Je hebt geen DNS-ingang voor site2.localhost (je hebt er wél een voor localhost zónder site2 en zónder www.site2 ervoor).
Wat je moet doen is het volgende:
1. Maak een nieuwe snelkoppeling op je bureaublad naar:
notepad.exe %windir%\system32\drivers\etc\hosts
2. Indien XP: Dubbelklikken op die snelkoppeling
Indien Vista/Windows7: Rechtsklikken op die snelkoppeling en kiezen voor "Als Administrator uitvoeren"
3. Toevoegen in het hosts-bestand:
site2.localhost 127.0.0.1
www.site2.localhost 127.0.0.1

Afsluiten met het rode kruisje en opslaan.
4. Probeer apache opnieuw te starten, hopelijk nu zónder foutmelding.

Post anders hier de volledige httpd.conf.

Succes,

Tijs.
 
Laatst bewerkt:
dit is nu mijn httpd-vhosts.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/xampp/xampp/htdocs/site2"
ServerName site2.nl
ServerAlias www.site2.nl
ErrorLog "logs/site2-error.log"
CustomLog "logs/site2-access.log" common
</VirtualHost>

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot "C:/xampp/xampp/htdocs/site1"
ServerName site1.nl
ServerAlias www.site1.nl
ErrorLog "logs/site1-error.log"
CustomLog "logs/site1-access.log" common
</VirtualHost>

en dit is mijn host file

127.0.0.1 site2.nl
127.0.0.1 www.site2.nl
127.0.0.1 site1.nl
127.0.0.1 www.site1.nl

als ik nu naar site1.nl, site2.nl en localhost ga kom ik allemaal op site 2

wat doe ik nu nog verkeerd?

Bas
 
Ik kan zo snel denken aan een paar dingen:
a. Je roept httpd-vhosts.conf niet aan in httpd.conf

Aan het einde van httpd.conf staat (o.a.):
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

Je zult dus het commentaal-teken in de regel #Include conf/extra/httpd-vhosts.conf moeten weghalen, zodat het wordt:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

(en natuurlijk moet httpd-vhosts.conf in de submap extra staan onder de conf map én je moet apache herstarten, zie bij b.).

b. Je bent wellicht vergeten om apache te herstarten na je aanpassingen.
c. Niet apache maar andere webserver-software luistert nu op poort 80 op je pc. [Niet waarschijnlijk, maar toch maar even genoemd].
d. Je hebt je aanpassingen wellicht in het verkeerde bestand gezet. Je praat namelijk over het bestand host, maar ik heb het over hosts

Je kunt kijken of de httpd.conf / httpd-vhosts.conf 'klopt' d.m.v. de volgende aanroep van httpd.exe in de bin map van apache/xampp:

-t : run syntax check for config files
-M : a synonym for -t -D DUMP_MODULES
-t -D DUMP_MODULES : show all loaded modules
-S : a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
-L : list available configuration directives
-l : list compiled in modules
-h : list available command line options (this page)
-V : show compile settings
-v : show version number
-E file : log startup errors to file
-e level : show startup errors of level (see LogLevel)
-w : hold open the console window on error
-k uninstall : uninstall an Apache service
-k config : change startup Options of an Apache service
-k install : install an Apache service
-k stop|shutdown : tell running Apache to shutdown
-k restart : tell running Apache to do a graceful restart
-k start : tell Apache to start
-n name : set service name and use its ServerConfigFile
-c "directive" : process directive after reading config files
-C "directive" : process directive before reading config files
-f file : specify an alternate ServerConfigFile
-d directory : specify an alternate initial ServerRoot
-D name : define a name for use in <IfDefine name> directives

Options: %s [-v] [-V] [-h] [-l] [-L] [-t] [-S]
%s [-k install|config|uninstall] [-n service_name]
%s [-w] [-k start|restart|stop|shutdown]
%s [-C "directive"] [-c "directive"]
Usage: %s [-D name] [-d directory] [-f file]

In jouw geval zijn dus 2 tests relevant:
httpd.exe -t
httpd.exe -S

Ziet er bij mij zo uit:

C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -t
Syntax OK


C:\Program Files\Apache Software Foundation\Apache2.2\bin>httpd.exe -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server dummy-host.blah.nl (C:/Program Files/Apache Software Foundation/Apache2.2/conf/extra/httpd-vhosts.conf:28)
port 80 namevhost dummy-host.blah.nl (C:/Program Files/Apache Software Foundation/Apache2.2/conf/extra/httpd-vhosts.conf:28)
port 80 namevhost dummy-host2.blah.nl (C:/Program Files/Apache Software Foundation/Apache2.2/conf/extra/httpd-vhosts.conf:37)
Syntax OK


C:\Program Files\Apache Software Foundation\Apache2.2\bin>
C:\Program Files\Apache Software Foundation\Apache2.2\bin>

Verder is het zo dat als je http://localhost aanroept dat dan de DocumentRoot instelling van de eerste VirtualHost in je httpd-vhosts.conf wordt gebruikt (als je die tenminste laat aanroepen in httpd.conf), want je hebt geen VirtualHost gedefinieerd voor de 'website' localhost.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
Als je http://site1.nl en http://site2.nl aanroept zouden die de daarbij gedefinieerde websites in httpd-vhosts.conf moeten aanroepen.

Succes,

Tijs.
 
Laatst bewerkt:
ik heb het net gecontroleerd dus:

A. ik roep httpd-vhosts.conf aan in httpd.conf
B. ik heb apache opnieuw opgestart
C. ik heb XAMPP geïnstalleerd dus gebruik ik apache
D. sorry typ fout ik bedoelde hosts

veder heb ik de controle uitgevoerd en toen kreeg ik dit
dir klopt niet met wat jij had. kan iemand mij vertellen wat hier fout aan is?

c:\xampp\xampp\apache\bin>httpd.exe -t
[Sun Jul 25 12:46:23 2010] [warn] _default_ VirtualHost overlap on port 80, the
first has precedence
Syntax OK

c:\xampp\xampp\apache\bin>httpd.exe -S
[Sun Jul 25 12:46:26 2010] [warn] _default_ VirtualHost overlap on port 80, the
first has precedence
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 site2.nl (C:/xampp/xampp/apache/conf/extra/httpd-vhosts.c
onf:46)
*:80 site1.nl (C:/xampp/xampp/apache/conf/extra/httpd-vhosts.c
onf:55)
_default_:443 localhost (C:/xampp/xampp/apache/conf/extra/httpd-ssl.con
f:80)
Syntax OK

Bas
 
Post hier (in een bijlage, gezipt):
httpd.conf
httpd-vhosts.conf
httpd-ssl.conf

en alle andere .conf bestanden die je evt. verder nog aanroept in httpd.conf

Probleem zou kunnen zitten in het ontbreken van
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

in httpd-vhosts.conf danwel ergens een <VirtualHost _default_:80> instelling in een van de (andere) .conf bestanden etc.

Beter dat we alle .conf bestanden bij elkaar hebben zodat helpers thuis de situatie kunnen 'naspelen' en mogelijk het probleem verhelpen.

Tijs.
 
Is precies, zo lijkt het, wat ik in mijn vorige posting al schreef:
NameVirtualHost is niet ingeschakeld in httpd-vhosts.conf

Bij jou staat:
# Use name-based virtual hosting.
#
##NameVirtualHost *:80


Dat moet dus worden:
# Use name-based virtual hosting.
#
NameVirtualHost *:80

Natuurlijk hierna apache herstarten.

Kijk of de aanpassingen van hierboven bij httpd.exe -S andere/betere resultaten geeft.


Succes,

Tijs.
 
Fijn dat het gelukt is, en bedankt voor de terugmelding.

Tijs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan