当我们在一个ip上建立多个站点的时候,会想到二级域名来指向不同的站点,但是在域名DNS管理中,域名是不能指向网站子目录的和其他端口的,所以这时候必须用到apache的设置了.

api.domain.com => domain.com/api
api.domain.com => 127.0.0.1:7777

80端口绑定多个地址

首先需要找到apache的配置文件httpd.conf.添加配置可以直接在该配置文件里添加,也可以在httpd文件夹里的conf.d文件夹里新建*.conf文件就行,apache会自动引入,个人比较喜欢后者,方便查看管理.

接着输入以下内容.

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName domain.com

AddDefaultCharset UTF-8
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/blog
ServerName blog.domain.com

AddDefaultCharset UTF-8
</VirtualHost>

需要多少就添加多少.

使用rewrite模块重定向

同上,找到apache的配置文件httpd.conf.添加配置可以直接在该配置文件里添加,也可以在httpd文件夹里的conf.d文件夹里新建*.conf文件就行,apache会自动引入,个人比较喜欢后者,方便查看管理.

在conf.d里创建文件Subdomain.conf,并打开.
首先写上LoadModule rewrite_module modules/mod_rewrite.so开启rewrite_module,如果httpd.conf里已经开启,则可以不用再写这句.

接着输入以下内容.

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/etc/httpd/conf/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

/etc/httpd/conf一般为存放httpd.conf的位置,在此目录下新建vhost.map

www.domain.com /var/www/html
api.domain.com /var/www/api

格式为 域名 + 空格 + 站点目录