Apache域名解析配置

XAMPP 无非就是集成了 APache 之类的环境集成包,实现多域名也就是通过配置 Apache 实现的。

    现在假定你有两个目录,一个存在于 /xampp/htdocs/a,另一个存在于 /xampp/htdocs/b 。
现在你想要在本地测试的时候访问 www.a.com 对应的目录是 /xampp/htdocs/a ,访问 www.b.com 对应的目录是 /xampp/htdocs/b 。

1、首先修改C:\WINDOWS\system32\drivers\etc目录下的 hosts 文件,用记事本打开,加入:
127.0.0.1 www.a.com
127.0.0.1 www.b.com

2、打开xampp\apache\conf\httpd.conf文件,搜索 “Include conf/extra/httpd-vhosts.conf”,确保前面没有 # 注释符,也就是确保引入了 vhosts 虚拟主机配置文件。

开启了httpd-vhosts.conf,默认的httpd.conf默认配置失效(确保 httpd-vhosts.conf 文件里也开启了虚拟主机配置,见第3条),访问此IP的域名将全部指向 vhosts.conf 中的第一个虚拟主机。

3、在虚拟主机设置文件xampp\apache\conf\extra\httpd-vhosts.conf里设置:
取消 NameVirtualHost *:80 前面的 ##,这样就启用了 vhosts.conf ,默认的httpd.conf默认配置失效。虚拟主机配置将只设置在 httpd-vhosts.conf 里。

<VirtualHost *:80>
DocumentRoot /xampp/htdocs/
ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@admin.com
    DocumentRoot "D:\Program Files\Zend\Apache2/htdocs"
    ServerName localhost
    #ServerAlias www.dummy-host.example.com

    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin admin@admin.com
    DocumentRoot "D:\Program Files\Zend\Apache2/htdocs/test"
    ServerName www.test.com
    ErrorLog "logs/test-error.log"
    CustomLog "logs/test-access.log" common
</VirtualHost>

 

涉及到的相关选项说明:

NameVirtualHost *            (设定虚拟主机的ip)
<VirtualHost *>           (开头设定虚拟主机的ip)
ServerAdmin [email]admin@domain.com[/email]   (设定虚拟主机的管理者信箱,不用和预设的网站管理者相同)
DocumentRoot /yourdir        (指定虚拟主机的网站主目录)
ServerName domain.com        (设定虚拟主机的名称,指定设定虚拟主机的UR)
ServerAlias [url]www.domain.com[/url]     (设定虚拟主机的別名,例: WWW )
ErrorLog logs/?? ??          (虚拟主机发生错误时要记录在哪个目录,可不设.)
TransferLog logs/??         (虚拟主机存取记载要存放的个目录,可不设.)
</VirtualHost>           (结束,要设第二组虚拟主机在从开头开始设)


至此,XAMPP 的虚拟主机设置完毕,现在 访问 localhost 还是原来的 XAMPP 的帮助指南,访问 www.a.com 将指向到绑定的 a 目录,访问 www.b.com 将指向到绑定的 b 目录。

一般会出现 Forbidden   You don't have permission to access \ on this server.

httpd.conf中找到

<Directory />
     Options FollowSymLinks
     AllowOverride None
     Order deny,allow
     deny from all
     Satisfy all
</Directory>
然后试着把deny from all中的deny改成了allow,保存后重起了apache,然后再一测试我的网页,哈哈!居然问题就出在这,访问测试网站完全正常了。

 

如何使用泛域名!

(首先你的主机要是独立IP或默认IP可以访问你的空间的)!

#主站(泛域名)
<VirtualHost *:80>
    ServerAdmin guofei886@163.com
    DocumentRoot "D:/xampp/htdocs"
    ServerName www.jlds110.com

    ServerAlias *.jlds110.com

    ##ErrorLog "logs/b-error.log"
    ##CustomLog "logs/b-access.log" combined
</VirtualHost>


二级域名设置:(未测)

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com

  其次,在 httpd.conf 中打开 mod_rewrite

  之后,在 httpd.conf 的最后,添加以下内容:

  RewriteEngine on

  RewriteMap lowercase int:tolower

  RewriteMap vhost txt:/usr/local/etc/apache/vhost.map

  RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

  RewriteCond ${vhost:%1} ^(/.*)$

  RewriteRule ^/(.*)$ %1/$1

  其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。

  然后,在这个所在路径的目录下创建一个文件: vhost.map

  内容为:

  www.domain.com /usr/local/www/data-dist/domain

  bbs.domain.com /usr/local/www/data-dist/bbs

  anyname.domain.com /usr/local/www/data-dist/anyname

  以上部分都是:" 域名+空格+绝对路径" 的形式。

  最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:

  domain , bbs , anyname 等等,理论上可以无限。

  这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以

  随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache

首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com

  其次,在 httpd.conf 中打开 mod_rewrite

  之后,在 httpd.conf 的最后,添加以下内容:

  RewriteEngine on

  RewriteMap lowercase int:tolower

  RewriteMap vhost txt:/usr/local/etc/apache/vhost.map

  RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$

  RewriteCond ${vhost:%1} ^(/.*)$

  RewriteRule ^/(.*)$ %1/$1

  其中的 /usr/local/etc/apache 是你的 apache 服务器配置文件所在路径,根据实际情况更改。

  然后,在这个所在路径的目录下创建一个文件: vhost.map

  内容为:

  www.domain.com /usr/local/www/data-dist/domain

  bbs.domain.com /usr/local/www/data-dist/bbs

  anyname.domain.com /usr/local/www/data-dist/anyname

  以上部分都是:" 域名+空格+绝对路径" 的形式。

  最后,在你的网站根目录 /usr/local/www/data-dist 下,创建对应目录:

  domain , bbs , anyname 等等,理论上可以无限。

  这样,通过浏览器,访问 www.domain.com 时,实际上访问的就是 /usr/local/www/data-dist/domain目录下的文件。同理,访问 bbs.domain.com 实际上访问的就是 /usr/local/www/data-dist/bbs 目录下的文件。而且,你可以

  随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,不用重启 apache

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值