XAMPP - Rootverzeichnis ändern

mr5

Banned
Registriert
Feb. 2005
Beiträge
1.041
Ist XAMPP installiert, ist der http://localhost immer das 'htdocs'-Verzeichnis im Ordner von XAMPP - also z.B. D:\xampp\htdocs

Möchte man lokal ein Web zum Laufen bringen, legt man am Besten ein Unterverzeichnis im Ordner htdocs an (berichtigt mich, wenn ich irre) und spricht die ganze Sache so an: http://localhost/webprojekt/index.htm

Funktioniert ja alles wunderbar aber die absolute Pfadangabe /images/banner.gif funktioniert natürlich dann nicht mehr.

ZUR FRAGE: Weiss einer von euch wie man das Rootverzeichnis von htdocs z.B. in ein Unterverzeichnis von htdocs legen kann z.B. d:\xampp\htdocs\webprojekt ??

Danke im Voraus für eure Mühe einer Antwort.

Viele Grüße
Stefan
 
Warum möchtest du dein Rootverzeichnis auf htdocs/webprojekt/ ändern?
Leg doch einfach alles in htdocs ab...

und außerdem finde ich persönlich absolute Pfangaben nicht so toll. Wenn du relative benutzt, bleibt dein ganzes Projekt viel flexibler. Außerdem fällt mir im Moment nichts ein, wo man eine absolute anstatt einer relativen benutzen müsste.
 
Das Root-Verzeichnis wird über die Direktive DocumentRoot in der httpd.conf festgelegt, neben der globalen Zuweisung gibt es noch die Möglichkeit die Direktive in <VirtualHost/> einzusetzen, um virtuellen Hosts eigene Document-Roots zuzuweisen:

Code:
DocumentRoot = d:/xampp/htdocs/webprojekt
[...]
<VirtualHost ...>
  [...]
  DocumentRoot = d:/xampp/htdocs/anderes-webprojekt
  [...]
</VirtualHost>

greetins, Keita
 
Vielen Dank Keita, einfach Klasse! :daumen:

@ComputerFreak

Es gibt manchmal Anwendungsfälle, da ist eine absolute Pfadangabe einfach wesentlich vorteilhafter als andere Methoden.

Beispiel: Hast ein Verzeichnis mit Include-Dateien - und verschiedene PHP-Dateien in verschiedenen Pfadtiefen. Mit absoluten Pfadangaben braucht man nicht ständig die Pfade zu ändern.
 
Zuletzt bearbeitet:
<VirtualHost ...>
[...]
DocumentRoot =d:/xampp/htdocs/anderes-webprojekt
[...]
</VirtualHost>

Sag mal Keita, die Pünktchen müssen jetzt nicht da sein?


Also das Rootverzeichnis komplett ändern das funktioniert.

Aber das virtuelle Rootverzeichnis. Habe das ganze so in die httpd.conf geschrieben. Ist das so richtig?

DocumentRoot "d:\xampp\htdocs\"
<VirtualHost>
DocumentRoot "d:\xampp\htdocs\anderes-webprojekt"
</VirtualHost>

Und wie spreche ich den virtuellen Root an? So etwa: http://localhost/anderes-webprojekt ?
 
Zuletzt bearbeitet:
DocumentRoot "d:\xampp\htdocs\"
<VirtualHost>
DocumentRoot "d:\xampp\htdocs\anderes-webprojekt"
</VirtualHost>


Also so schreibt er mir beim Apacheneustart: "<VirtualHost> directive requires additional arguments"

Da braucht er wohl noch ein paar weitere Angaben... hast Du vielleicht noch ein Tipp Keita ?
 
Es gibt IP-based und name-based virtual hosts, d.h. ein virtual host ist entweder einer IP oder einem hostname zugeordnet. Um bspw. einen virtual host für die IP 192.168.0.1 einzurichten, muß der VirtualHost-Block so aussehen:

Code:
<VirtualHost 192.168.0.1>
DocumentRoot "d:\xampp\htdocs\anderes-webprojekt"
</VirtualHost>

Wenn man dann die Seite über die IP 192.168.0.1 aufruft, werden die Seiten unterhalb von d:\xampp\htdocs\anderes-webprojekt angezeigt, dazu muß dem Rechner natürlich erstmal die IP zugewiesen sein und der Apache muß auf Anfragen an diese IP reagieren, letzteres wird über die Listen-Direktive gesteuert.

greetings, Keita
 
Hallo Keita,

vielen vielen Dank! Einfach Klasse Deine Ausführungen. Kann man Dich auch als Nachhilfelehrer gewinnen? :D

Werde mich wohl heute Abdend über die "Listen-Direktive" durchgooglen müssen :) . Na wenigstens weiss ich jetzt, dass es sowas gibt.

Könntest Du vieeeleicht noch eine kurze Anleitung zur Listendirektive bezüglich "Eine Lokale Ip dem Apache zuzuweisen" schreiben? :D
 
Du kennst meinen Stundensatz nicht, denn andernfalls würde der Wunsch gar nicht erst aufkeimen :D
Standardmäßig lauscht Apache auf allen lokalen IP-Schnittstellen und reagiert auf Anfragen, die auf Port 80 eingehen, der Port wird dabei über die Port-Direktive festgelegt. Wenn auf mehr als einem Port gelauscht werden soll, fügt man einfach weitere Port-Direktiven mit der entsprechenden Portnummer hinzu:

Code:
Port 80
Port 81
Port 8080

Listen ist dann relevant, wenn Apaches Lauschgelüste auf einzelne IPs und/oder Ports beschränkt werden sollen:

Code:
Listen 192.168.0.1:80
Listen 192.168.0.1:81
Listen 192.168.0.2:80

In diesem Fall lauscht der Apache, obwohl ihm über die o.g. Port-Direktiven die Ports 80, 81 und 8080 zugewiesen wurden, nur auf Anfragen, die an die IP 192.168.0.1 über die Ports 80 und 81 und an die IP 192.168.0.2 über den Port 80 gerichtet sind, alle anderen Anfragen werden nicht berücksichtigt.

In deinem Fall kannst du die Listen-Direktive ignorieren und mußt nur deinem Rechner die zusätzliche(n) IP(s) zuweisen, wenn die entsprechenden <VirtualHost>s eingerichtet sind, antwortet der Apache je nach IP mit den entsprechenden Seiten.

greetings, Keita
 
Zitat von Keita: Du kennst meinen Stundensatz nicht, denn andernfalls würde der Wunsch gar nicht erst aufkeimen.


Gute Leute sind halt teuer - das ist ein Naturgesetz.
 
Zuletzt bearbeitet:
So definieren Sie einen lokalen VirtualHost unter XAMPP:

Um auf einem (lokalen) Webserver mehrere Domains schalten zu können, wird in der Regel für jede Domain ein VirtualHost Eintrag gesetzt. In diesem Artikel wird die Vorgehensweise anhand einer XAMPP Installation unter Windows erläutert. Dieser Artikel geht von einer bereits installierten und funktionsfähigen XAMPP Installation von Apachefriends.org unter Windows XP Professional (Version 2002, Service Pack 2) aus. Grundsätzlich sollten auf aktuellen Windows-Systemen die Strukturen ähnlich sein. Die Installation von XAMPP und Vorbereitung für Weblication® CMS bzw. Intranet wird im Artikel über die weiterführenden Informationen (unten) beschrieben.

Um nun in der XAMPP Installation unter Windows mehrere separate Domains nutzen zu können, müssen diese als VirtualHost definiert werden.
Definieren Sie hierzu zuerst in der hosts Datei von Windows den entsprechenden Hosts-Eintrag. Die hosts Datei liegt meist unter C:\WINDOWS\system32\drivers\etc\hosts (ohne Dateiendung).

Nachfolgend ein beispielhafter Auszug aus der hosts Datei, wenn als VirtualHost die Domain "domain.dd"definiert werden soll:

Code:
127.0.0.1           localhost

127.0.0.1         domain.dd [url]www.domain.dd[/url]

Im zweiten Schritt passen Sie die vhost Datei des Apache Webservers an. Bei einer aktuellen XAMPP Installation wird in der Regel standardmässig der Apache 2 Webserver mit einer separaten httpd-vhosts.conf Datei mitgeliefert. Diese liegt bei der Standardinstallation von XAMPP unter z.B. C:\Programme unter C:\Programme\xampp\apache\conf\extra\httpd-vhosts.conf ab.

Aktivieren Sie hier, wie im nachfolgenden beispielhaften Auszug demonstriert, den NameVirtualHost für die lokale IP-Adresse (127.0.0.1). Setzen Sie dann innerhalb von VirtualHost Tags den entsprechenden VirtualHost (z.B. www.domain.dd).

Code:
#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

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

NameVirtualHost 127.0.0.1

################################################
# VirtualHost's
################################################

<VirtualHost 127.0.0.1>
    ServerName localhost
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    ServerAdmin webmaster@localhost
    DocumentRoot "c:/Programme/xampp/htdocs"
    ScriptAlias /cgi-bin/ "c:/Programme/xampp/htdocs/cgi-bin/"

    <Directory "c:/Programme/xampp/htdocs">
    Options Indexes FollowSymLinks
    Options +Includes
#   Options +
    AllowOverride FileInfo
    AllowOverride None
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>

</VirtualHost>

<VirtualHost 127.0.0.1>
    ServerName [url]www.domain.dd[/url]
    ServerAlias domain.dd
    AddType text/html .shtml
    AddHandler server-parsed .shtml
    ServerAdmin webmaster@domain.dd
    DocumentRoot "c:/Programme/xampp/htdocs_domain"
    ScriptAlias /cgi-bin/ "c:/Programme/xampp/htdocs_domain/cgi-bin/"

    <Directory "c:/Programme/xampp/htdocs_domain">
    Options Indexes FollowSymLinks
    Options +Includes
#   Options +
    AllowOverride FileInfo
    AllowOverride None
    Order allow,deny
    Allow from all
    DirectoryIndex index.html index.htm index.php
    </Directory>

</VirtualHost>

Damit diese Einstellungen wirksam werden, starten Sie den Apache Webserver neu. Dies ist bei der Installer-Version von XAMPP über die XAMPP-Konsole möglich. Nähere Informationen hierzu finden Sie auf den Seiten von Apachefriends.org.

Das Ganze nochmal unter: http://www.dev.weblication.de/wDev/...15_artikel_xampp_virtualhosts.php?category=28


Vielen Dank für Deine Mühe Keita. Mit Deinen "Fachausdrücken" habe ich bisschen gegoogelt und bin dann auf diese Seite gestoßen. Das funktioniert 1A.
 
Zuletzt bearbeitet:
Ohne die "Fachausdrücke" wird es mitunter schwierig nach passenden Informationen zu suchen oder Dritte um Hilfe zu bitten, daher verwende ich i.d.R. "notgedrungen" dieses Kauderwelsch :D

Unter Windows kannst du der Maschine einfach über die Systemsteuerung weitere IPs zuordnen, in dem du unter Network and Dial-Up Connectios der lokalen Verbindung unter Eigenschaften -> Internet Protocol (TCP/IP) -> Eigenschaften -> Erweitert weitere IPs einträgst, für lokale Gehversuche solltest du ausschließlich IPs aus den privaten Netzsegmenten nehmen, damit es nicht zu Problemen kommt.
Diesen neuen IPs kannst du ebenfalls über die hosts-Datei oder über einen Nameserver passende Hostnamen zuweisen, auf diese Weise kann man sowohl beliebig viele IP-based als auch name-based virtual hosts einrichten und lokal rumspielen.

greetings, Keita
 
Jetzt erst ist mir aufgefallen, dass HTTP-Anfragen in den richtigen absoluten Pfaden landen, aber PHP-Anfragen nicht.

Include ich z.B. eine Datei mit einer absoluten Pfadangabe nimmt er mir trotzdem d:/xampp/htdocs

Hat einer eine Idee wie ich jetzt php dazu bringen kann genauso wie die HTTP-Anfrage das gleiche Rootverzeichnis zu nehmen?

Daaanke im Voraus.

Schönes Wochenende euch allen... :D

Gruß
Stefan
 
Zurück
Oben