Is it possible to configure xampp to serve up a file outside of the
For instance, say I have a file located as follows:
and my xampp files are normally served out from:
(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
edit: edited to add Apache to the question title to make Q/A more "searchable"
This question is tagged with
~ Asked on 2008-08-04 16:54:49
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).
127.0.0.1 transitcalculator.localhost #transitCalculator
to the end of the file (before the Spybot - Search & Destroy stuff if you have that installed).
Now you can access that directory by browsing to http://transitcalculator.localhost/.
Starting ~line 200 of your
http.conf file, copy everything between
<Directory "C:/xampp/htdocs"> and
</Directory> (~line 232) and paste it immediately below with
C:/xampp/htdocs replaced with your desired directory (in this case
C:/Projects) to give your server the correct permissions for the new directory.
<IfModule alias_module></IfModule> section (~line 300) and add
Alias /transitCalculator "C:/Projects/transitCalculator/trunk"
(or whatever is relevant to your desires) below the
Alias comment block, inside the module tags.
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
~ Answered on 2008-08-04 17:05:48
You can relocate it by editing the DocumentRoot setting in XAMPP\apache\conf\httpd.conf.
It should currently be:
Change it to:
~ Answered on 2008-08-04 17:00:27
A VirtualHost would also work for this and may work better for you as you can host several projects without the need for subdirectories. Here's how you do it:
httpd.conf (or extra\httpd-vhosts.conf relative to httpd.conf. Trailing slashes "\" might cause it not to work):
NameVirtualHost *:80 # ... <VirtualHost *:80> DocumentRoot C:\projects\transitCalculator\trunk\ ServerName transitcalculator.localhost <Directory C:\projects\transitCalculator\trunk\> Order allow,deny Allow from all </Directory> </VirtualHost>
HOSTS file (c:\windows\system32\drivers\etc\hosts usually):
# localhost entries 127.0.0.1 localhost transitcalculator.localhost
Now restart XAMPP and you should be able to access http://transitcalculator.localhost/ and it will map straight to that directory.
This can be helpful if you're trying to replicate a production environment where you're developing a site that will sit on the root of a domain name. You can, for example, point to files with absolute paths that will carry over to the server:
<img src="/images/logo.png" alt="My Logo" />
whereas in an environment using aliases or subdirectories, you'd need keep track of exactly where the "images" directory was relative to the current file.
~ Answered on 2008-08-05 15:30:30
You can set Apache to serve pages from anywhere with any restrictions but it's normally distributed in a more secure form.
Editing your apache files (http.conf is one of the more common names) will allow you to set any folder so it appears in your webroot.
alias myapp c:\myapp\
I've edited my answer to include the format for creating an alias in the http.conf file which is sort of like a shortcut in windows or a symlink under un*x where Apache 'pretends' a folder is in the webroot. This is probably going to be more useful to you in the long term.
~ Answered on 2008-08-04 17:00:08
If you're trying to get XAMPP to use a network drive as your document root you have to use UNC paths in httpd.conf. XAMPP will not recognize your mapped network drives.
For example the following won't work, DocumentRoot "X:/webroot"
But this will, DocumentRoot "//192.168.10.100/webroot" (note the forward slashes, not back slashes)
~ Answered on 2011-01-28 03:04:36
Solution to allow Apache 2 to host websites outside of htdocs:
Underneath the "DocumentRoot" directive in httpd.conf, you should see a directory block. Replace this directory block with:
<Directory /> Options FollowSymLinks AllowOverride All Allow from all </Directory>
REMEMBER NOT TO USE THIS CONFIGURATION IN A REAL ENVIRONMENT
~ Answered on 2009-01-26 15:11:06