本文介绍的多站点配置方法是MacOS中默认的配置方法,其实还有其他方法来配置多站点,方法要更简单一些,只是不推荐而已。如果真懂了Apache的配置文件httpd.conf,能找到很多种细节不同的配置方法。
一、修改 httpd.conf
sudo vim /etc/apache2/httpd.conf
找到以下五行,并取消注释
#LoadModule php7_module libexec/apache2/libphp7.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
#Include /private/etc/apache2/extra/httpd-userdir.conf
#Include /private/etc/apache2/extra/httpd-vhosts.conf
取消注释后如下
LoadModule php7_module libexec/apache2/libphp7.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
这里需要说明一下
取消注释第一行代码,是为了开启php语言解析功能,如果不开启的话,php页面会直接显示php代码。
取消注释第二行代码,是为了开启站点代码伪静态重写功能,只有开启这个功能以后,才能够让伪静态链接功能生效。
取消注释第三行代码,是为了开启基于同一个IP地址多站点功能,如果不开启这一项,是无法在一个IP地址上配置多个站点的。
取消注释第四行代码,是为了让用户根目录配置文件生效,第三步就会创建用户根目录配置文件。
找到如下代码,并添加index.php
DirectoryIndex index.html
修改之后如下
DirectoryIndex index.php index.html
二、修改 httpd-userdir.conf
sudo vim /etc/apache2/extra/httpd-userdir.conf
找到如下代码,并取消注释
#Include /private/etc/apache2/users/*.conf
取消注释后如下
Include /private/etc/apache2/users/*.conf
三、创建用户站点根目录配置文件
sudo cp /etc/apache2/users/Guest.conf /etc/apache2/users/jacky.conf
编辑jacky.conf,修改后的内容如下
Options Indexes MultiViews
Require all granted
四、创建两个站点
编辑多站点配置文件
sudo vim /etc/apache2/extra/httpd-vhosts.conf
修改后配置文件内容如下
ServerAdmin webmaster@localhost
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
ServerAdmin [email protected]
DocumentRoot "/Users/jacky/Sites/test"
ServerName test.app
ServerAlias *.test.app
ErrorLog "/private/var/log/apache2/test.app-error_log"
CustomLog "/private/var/log/apache2/test.app-access_log" common
重启Apache
sudo apachectl restart
到目前为止,访问站点localhost是没问题的!
五、创建本地站点test.app
编辑主机配置文件
sudo vim /etc/hosts
修改后的内容如下
127.0.0.1 localhost test.app
255.255.255.255 broadcasthost
::1 localhost
接着创建test.app的站点目录
mkdir -p ~/Sites/test
接着创建一个演示文件index.html
cd ~/Sites/test
vim index.html
index.html的内容如下
已经正常工作了。
这个时候就可以通过Safari访问test.app了。
只是此时会出现中文乱码,所以还需要一步。
六、给Apache设置默认字符编码
编辑httpd.conf
sudo vim /etc/apache2/httpd.conf
找到如下代码
#ServerName www.example.com:80
在其下面添加如下代码
#Set the default charset
AddDefaultCharset UTF-8
重启Apache
sudo apachectl restart
然后再次打开test.app,中文显示正常了。