Configuring subdomains in XAMPP
·2 mins

My environemnt #
At the time of writing, I am running XAMPP 8.0.3 on macOS 11.4
1. Enable Virtual Hosts in Apache #
Go to /Applications/XAMPP/xamppfiles/etc/httpd.conf and uncomment this line:
#Include etc/extra/httpd-vhosts.conf
2. Configuring a new virtual host #
Navigate to XAMPP’s
htdocsand create a directory namedsubdomains.Create a directory inside
subdomainsto be the root directory of the new subdomain. You may call it whatever you like, for this example we will call itmysubdomain.Replace the code inside
/Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.confto configure the new virtual host (subdomain).
# localhost
<VirtualHost *:80>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
ServerName localhost
<Directory "/Applications/XAMPP/xamppfiles/htdocs">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs"
ServerName localhost
SSLEngine On
SSLCertificateFile "etc/ssl.crt/server.crt"
SSLCertificateKeyFile "etc/ssl.key/server.key"
<Directory "/Applications/XAMPP/xamppfiles/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# mysubdomain.localhost
<VirtualHost *:80>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/subdomains/mysubdomain"
ServerName mysubdomain.localhost
<Directory "/Applications/XAMPP/xamppfiles/htdocs/subdomains/mysubdomain">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/subdomains/mysubdomain"
ServerName mysubdomain.localhost
SSLEngine On
SSLCertificateFile "etc/ssl.crt/server.crt"
SSLCertificateKeyFile "etc/ssl.key/server.key"
<Directory "/Applications/XAMPP/xamppfiles/htdocs/subdomains/mysubdomain">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# Repeat as above to add more
3. Edit your hosts file #
Edit /etc/hosts as superuser and add your new subdomain to the list.
sudo vim /etc/hosts
127.0.0.1 localhost
127.0.0.1 mysubdomain.localhost
This will point the hostname mysubdomain.localhost to your local machine, Apache will then handle any HTTP/HTTPS requests to it.
Final notes #
- Restart XAMPP for the changes to apply.
- Remember to ALWAYS make backups of the original config files.
- You may repeat this process to add as many subdomains as you like.
- If you have a
.htaccessin the root directory ofhtdocs, double check the rules you’re applying with it. You may have to add a.htaccessfile to your subdomain folder to override the rules set by the one in the root folder since subdomains folder is still a child ofhtdocs, otherwise you may be faced with an annnoying500 Internal Servererror like I was.