Make XAMPP/Apache serve file outside of htdocs
Is it possible to configure xampp to serve up a file outside of the
htdocs
directory?
For instance, say I have a file located as follows:
C:\projects\transitCalculator\trunk\TransitCalculator.php
and my xampp files are normally served out from:
C:\xampp\htdocs\
(because that's the default configuration) Is there some way to make Apache recognize and serve up my
TransitCalculator.php
file without moving it under htdocs
? Preferably I'd like Apache to serve up/have access to the entire contents of the projects directory, and I don't want to move the projects directory under htdocs
.
edit: edited to add Apache to the question title to make Q/A more "searchable"
Solution:
Virtual Hosts
- Open C:\xampp\apache\conf\extra\httpd-vhosts.conf.
- Un-comment line 19 (
NameVirtualHost *:80
). - Add your virtual host (~line 36):
<VirtualHost *:80> DocumentRoot C:\Projects\transitCalculator\trunk ServerName transitcalculator.localhost <Directory C:\Projects\transitCalculator\trunk> Order allow,deny Allow from all </Directory> </VirtualHost>
- Open your hosts file (C:\Windows\System32\drivers\etc\hosts).
- Add
127.0.0.1 transitcalculator.localhost #transitCalculator
to the end of the file (before the Spybot - Search & Destroy stuff if you have that installed). - Save (You might have to save it to the desktop, change the permissions on the old hosts file (right click > properties), and copy the new one into the directory over the old one (or rename the old one) if you are using Vista and have trouble).
- Restart Apache.
Now you can access that directory by browsing to http://transitcalculator.localhost/.
Make an Alias
- Starting ~line 200 of your
http.conf
file, copy everything between<Directory "C:/xampp/htdocs">
and</Directory>
(~line 232) and paste it immediately below withC:/xampp/htdocs
replaced with your desired directory (in this caseC:/Projects
) to give your server the correct permissions for the new directory. - Find the
<IfModule alias_module></IfModule>
section (~line 300) and addAlias /transitCalculator "C:/Projects/transitCalculator/trunk"
(or whatever is relevant to your desires) below theAlias
comment block, inside the module tags.
Change your document root
- Edit ~line 176 in C:\xampp\apache\conf\httpd.conf; change
DocumentRoot "C:/xampp/htdocs"
to#DocumentRoot "C:/Projects"
(or whatever you want). - Edit ~line 203 to match your new location (in this case
C:/Projects
).
Notes:
- You have to use forward slashes "/" instead of back slashes "\".
- Don't include the trailing "/" at the end.
- restart your server.
COMMENTS