Problem
Im trying to setup a local working sub domain Wordpress multisite on the port 8090.
Setup
MAMP Stack with SQL on port 3306, Apache on 8080.
Wordpress 4.4 installed on path: /Users/x/y/website/www/wordpress
Running PHP Webserver in IntelliJ on port 8090.
Error (when trying to install multisite network in the admin wordpress section)
Error: You cannot install a network of sites with your server address
You cannot use port numbers such as :8090.
Therefore I changed my apache2 httpd.config file.
httpd.config
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
and added virtual hosts
httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/Users/x/Environment/mampstack-5.4.32-0/
apache2/htdocs"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/x/y/website/www"
ServerName testproject.dev
<Directory "/Users/x/y/website/www">
AllowOverride All
</Directory>
</VirtualHost>
Then I changed the /etc/host.
/etc/host
127.0.0.1 localhost testproject.dev
# later on for mulisite sub domains
127.0.0.1 localhost.com
127.0.0.1 subdomain.localhost.com
I restarted the whole MAMP setup, flushed the cache for the htaccess file and restarted my php server. But I still got the same error and cant setup my multisite in Wordpress.
Question
What am I doing wrong?
You cannot create a network in the following cases:
"WordPress address (URL)" is different from "Site address (URL)".
"WordPress address (URL)" uses a port number other than ':80', ':443'.
Change your port to 80 for wordpress multisites is a simple solution.
Related
Suppose you have a local project at /Users/yourname/Sites/example and want to be able to use both http://example.local and https://example.local to reach it on your Mac, using MAMP (I'm using MAMP version 6.6).
Read the answer for the steps to take.
1) Add your custom domain to the hosts file
Open the Finder and choose the Go to folder command from the Go menu. Enter /private/etc/hosts as the path; this will open a Finder window where you will find the hosts file.
Open the hosts file and map your custom domain to 127.0.0.1 (localhost):
127.0.0.1 localhost
127.0.0.1 example.local
Now, when you visit http://example.local, the browser will redirect you to localhost and show your list of local sites (which is not what we want yet, but hey, this is just the first step).
2) Configure MAMP to use Apache's and MySql's default ports
Open MAMP, click on Preferences, then go the Ports tab. By default, MAMP uses port 8888 for Apache and 8889 for MySQL, but it gives you the option to use Apache's default port (80) as well as MySQL's default port (3306): click the 80 & 3306 button to use these ports rather than 8888 and 8889.
3) Enable virtual hosts in Apache
Go to and open the /Applications/MAMP/conf/apache/httpd.conf file. Look for this line:
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Uncomment the line by removing the asterisk at the beginning: uncommenting the line enables virtual hosts. (If the line is already uncommented, you're good to go for this step).
4) Configure Apache to listen to port 80
While you have /Applications/MAMP/conf/apache/httpd.conf open, also look for this line:
Listen 8888
and change it to
Listen 80
Listen 443
In the previous step, you told MAMP to use port 80 for Apache, so the first line tells Apache to listen to port 80 rather than port 8888; the second line tells Apache to also listen to requests incoming on port 443: this is the port typically used by SSL connections, so it is an essential step to be able to reach your local site at https:// besides http://.
5) Create a SSL certificate for your local site
You need a SSL certificate to be able to reach your site at https://example.local as well. This can be easily done using the mkcert tool. You can read the instructions on Github, but basically it's about installing the tool, then running:
$ mkcert example.local
This generates two files: a certificate (example.local.pem) and a certificate key (example.local-key.pem).
Move these two files somewhere within your project. For example, you could create a hidden folder at the root of your project called .crt and put them in there.
6) Create a virtual host for your local site
Finally, it's time to actually create a virtual host for your local site. Go to and open the /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf file and include the following:
// These first two lines tell Apache to check for virtual hosts
// whenever a request comes in on port 80 (http://) or 443 (https://)
NameVirtualHost *:80
NameVirtualHost *:443
// This first directive tells Apache to serve the files at "/Users/yourname/Sites/example"
// whenever "http://example.local" is visited
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
</VirtualHost>
// This second directive tells Apache to serve the files at "/Users/yourname/Sites/example"
// whenever "https://example.local" is visited, and provides paths to the certificates
// we previously created
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
</VirtualHost>
That's it! Now you can view your site at both http://example.local and https://example.local
(Remember to adapt the paths to wherever your project and certificates are located though).
7) Need virtual hosts for multiple local sites?
Want to add virtual hosts for more local sites you have, eg. for a site you want to reach at http://test.local?
Go to /private/etc/hosts and add 127.0.0.1 test.local
127.0.0.1 localhost
127.0.0.1 example.local
127.0.0.1 test.local
Generate SSL certificates with mkcert test.local (like we did earlier on step 4).
Finally, update the virtual hosts file as follows:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
</VirtualHost>
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
</VirtualHost>
// Basically, copy and paste the virtual hosts for the example project
// and update the domain and paths accordingly
<VirtualHost *:80>
ServerName test.local
DocumentRoot "/Users/yourname/Sites/test"
</VirtualHost>
<VirtualHost *:443>
ServerName test.local
DocumentRoot "/Users/yourname/Sites/test"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/test/.crt/test.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/test/.crt/test.local-key.pem"
</VirtualHost>
8) Bonus: add extra configuration to your virtual hosts
The VirtualHost directive can accept a number of extra instructions that tell Apache what to do when a certain request is received.
For instance, suppose our example project is a Node application that can be reached at http://localhost:3000, but we want to use http://example.local to access it. We would have to tell Apache to forward any request made to http://example.local to http://localhost:3000.
NameVirtualHost *:80
NameVirtualHost *:443
// This line loads a module that enables proxying (it's turned off by default)
LoadModule proxy_http_module modules/mod_proxy_http.so
// The ProxyPass and ProxyPassReverse lines tell Apache
// to forward the request to http:// and https://localhost:3000
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
I've been using wamp for 2 weeks at my work without any problem, but now I've some issues :
localhost/phpmyadmin is working well, but
localhost/ and 127.0.0.1 gives me a 404 error :
Not Found The requested URL / was not found on this server.
I already tested the port 80 and it's used by Apache.
I have virtual hosts that works well but I can't create a new one anymore, it won't work, I don't know why.
I've searched a lot on internet but all I can find is solution that just does not work for me so if you could help me, that would be fantastic.
EDIT : I just changed my httpd-vhosts.conf, I had a mistake in my new vhosts, so now they work well, but I still have an error 404 on localhost/.
EDIT : Thank you RiggsFolly for the help, I needed to had localhost in my httpd-vhosts.conf
Ok, this sounds like the browser is trying to use the IPV6 network but you have not entered the IPV6 loopback address into the hosts file
Amend your hosts file to be
127.0.0.1 localhost
127.0.0.1 other.dev
127.0.0.1 other2.dev
::1 localhost
::1 other.dev
::1 other2.dev
The ::1 is the IPV6 loopback address just as 127.0.0.1 is the IPV4 loopback address.
You say you have Virtual Hosts setup, did you also define one, the first one for localhost. Once a Virtual Host is defined the default in httpd.conf for localhost is ignored.
So add this to the top of httpd-vhosts.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/wamp/www
<Directory "c:/wamp/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
Change c: to whatever drive you installed WAMPServer onto.
Can some one please help me to create a virtual host in Bitnami Lampstack, which is installed on ubuntu 14.0.4, through which I can access my site without specifying port number in the URL as- http://mysite.local instead of http://mysite.local:8080 ?
I have Bitnami Lampstack 5.3.29 (64 bit) installed on my system (ubuntu 14.0.4). I have configured the virtual host file as follows
<VirtualHost *:8080>
DocumentRoot "/home/qainfotech/lampstack-5.3.29-0/apache2/htdocs/mysite/htdocs"
ServerName mysite.local
</VirtualHost>
which allow me access the home page of my site very easily by the URL http://mysite.loca:8080 but the home page it doesn't redirect properly.
So how can I configure virtual host to access my site without specifying port number in the URL ?
<VirtualHost *:80>
DocumentRoot "/home/qainfotech/lampstack-5.3.29-0/apache2/htdocs/mysite/htdocs"
ServerName mysite.local
</VirtualHost>
Defaut HTTP port is port 80.
So when you don't specify a port in your url, you are using port 80.
I have two apache web servers running on my laptop running on windows 7. One on port 80(XAMPP) and the other 81(Zend CE). I use the Zend Server one to develop sites. I want to setup my virtual hosts on the second server using port 81 and not port 80. I have tried but all am getting is a request to search on google.
<VirtualHost *:81>
DocumentRoot "C:\Program Files (x86)\Zend\Apache2\htdocs"
ServerName localhost:81
</VirtualHost>
<VirtualHost *:81>
DocumentRoot "C:/Program Files (x86)/Zend/Apache2/htdocs/folder"
ServerName folder.app
</VirtualHost>
I made the changes to the hosts file.
did you remember to edit:
NameVirtualHost *:81
in the top of your vhosts file?
I'm new to using XAMPP so this may be simple to some people.
I have a few php projects that I would like to be able to debug locally and view in the browser (not concurrently, but without having to change config files/copy project folders each time I want to work on a different project).
On IIS, you could set up multiple sites to serve from your machine, and I'm looking for something similar in XAMPP. When using IIS, I added multiple records to the Windows hosts file so I could access the locally hosted sites by typing friendly web-style addresses (like http://myproject1.dev)
Thanks.
Greg, you're almost there--you need (like Moses said) to setup virtual hosts.
So if your Windows hosts file has
127.0.0.1 localhost
127.0.0.1 mysite-dev.com
127.0.0.1 anothersite-dev.com
Your virtual hosts file (httpd-vhosts.conf) might look like:
<VirtualHost *:80>
DocumentRoot C:/xampp/htdocs/
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
ServerName mysite-dev.com
DocumentRoot "C:/sites/mysite-dev"
<Directory "C:/sites/mysite-dev">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName anothersite-dev.com
DocumentRoot "C:/sites/anothersite-dev"
<Directory "C:/sites/anothersite-dev">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Don't forget to restart the web server after you make any changes.
I would like to make an additional in terms of up to date information.
XAMMP uses port 80 by default and we are able to publish 1 website. I also use IIS for .Net projects. In this respect, I set the port to XAMMP except the 80 port. So I avoid a conflict.
When we want to publish more than one website, we should do the following operations to httpd.conf (this is the current name).
1. Setting the ports
Find the #Listen expression in the httpd.conf file.
Change Listen 80 to Listen 8000 (or whatever else you want)
Listen 8000
If you need 3 different websites, type the others, including 1 definition on each line, as follows.
Listen 8001
Listen 8002
Listen 8003
2. Define the file paths of sites accessed through ports
Again, find in the httpd.conf file.
Identify the folders of each website as follows.
As you would see, I've created 3 directories called 8000, 8001, 8002 and 8003 under the htdocs directory within the XAMMP directory.
<VirtualHost *:8000>
DocumentRoot "C:\XAMPP\htdocs\8000"
ServerName localhost:8000
<\ VirtualHost>
<VirtualHost *:8001>
DocumentRoot "C:\XAMPP\htdocs\8001"
ServerName localhost:8001
<\ VirtualHost>
<VirtualHost *:8002>
DocumentRoot "C:\XAMPP\htdocs\8002"
ServerName localhost:8002
<\ VirtualHost>
<VirtualHost *:8003>
DocumentRoot "C:\XAMPP\htdocs\8003"
ServerName localhost:8003
<\ VirtualHost>
Restart your Apahche server on XAMMP.
You can now view your 3rd site, such as http://localhost:8003 or http://192.168.1.1:8003/.
Hope to be useful.
This question was asked almost ten years ago, and the answers above are a bit dated. Note that XAMPP has a "How-To" for virtual hosts avilable off the dashboard, when you install it.
From the "Welcome to XAMPP for Windows" page (localhost/dashboard, the default when you first load localhost) click on the "HOW-TO" Guides in the top menu bar. From there, look for the link "Configure Virtual Hosts" which will lead you to the localhost page "http://localhost/dashboard/docs/configure-vhosts.html"
In a nutshell, the process involves editing the "httpd-vhosts.conf" file (typically in C:\XAMPP\apache\conf\extra) and replacing the contents of that file with something like this:
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/"
ServerName localhost
</VirtualHost>
# vhosts - note sample entry from XAMPP how-to throws an error, so try this:
<VirtualHost *:80>
DocumentRoot "C:/Users/jdoe/Documents/dev.mysite.com/htdocs"
ServerName mysite.local
<Directory "C:/Users/jdoe/Documents/dev.mysite.com/htdocs">
Require all granted
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Additional vhosts (including SSL hosts) can be had by cloning the entry, and modifying DocumentRoot and ServerName directives and port numbers (e.g. 443 for TLS (SSL)). You can find tutorials on the web for creating and signing your own certificate, if you want to go that route.
The final step is to get your Windows machine to point your browser to the Apache host for your virtual domain (e.g. above, http://mysite.local). Using a text editor (Notebook will do) as administrator append the following entry onto your hosts file, which lives here:
C:\Windows\System32\drivers\etc\hosts
Append this entry to the hosts file:
127.0.0.1 mysite.local
IMPORTANT - you must restart your Windows machine or the new host will not respond. Some documentations will tell you just to restart the browser and Apache server, but I've found that's not sufficient.
IME, the hosts system and Apache directives can be particular, so be patient. You may need to rebuild configs, restart Apache, and restart your machine more than once.