2014-03-23 08:15:01
来 源
IT技术网
Apache
本文介绍Apache服务器环境中的域名解析和绑定,希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。
XAMPP 无非就是集成了 APache 之类的环境集成包,实现多域名也就是通过配置 Apache 实现的。

现在假定你有两个目录,一个存在于 /xampp/htdocs/a,另一个存在于 /xampp/htdocs/b 。

现在你想要在本地测试的时候访问 www.a.com 对应的目录是 /xampp/htdocs/a ,访问 www.b.com 对应的目录是 /xampp/htdocs/b 。

1、首先修改C:WINDOWSsystem32driversetc目录下的 hosts 文件,用记事本打开,加入:

127.0.0.1 www.a.com

127.0.0.1 www.b.com

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

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

3、在虚拟主机设置文件xamppapacheconfextrahttpd-vhosts.conf里设置:

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

<VirtualHost *:80>

DocumentRoot /xampp/htdocs/

ServerName localhost

</VirtualHost>

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "D:Program FilesZendApache2/htdocs"

ServerName localhost

#ServerAlias www.dummy-host.example.com

ErrorLog "logs/localhost-error.log"

CustomLog "logs/localhost-access.log" common

</VirtualHost>

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "D:Program FilesZendApache2/htdocs/test"

ServerName www.test.com

ErrorLog "logs/test-error.log"

CustomLog "logs/test-access.log" common

</VirtualHost>

涉及到的相关选项说明:

NameVirtualHost *          (设定虚拟主机的ip)

<VirtualHost *>           (开头设定虚拟主机的ip)

ServerAdmin [email][email protected][/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 [email protected]

DocumentRoot "D:/xampp/htdocs"

ServerNamewww.server110.com

ServerAlias *.server110.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

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。