现在的位置: 首页 > 综合 > 正文

htaccess示例:多虚拟主机配置

2013年03月15日 ⁄ 综合 ⁄ 共 2185字 ⁄ 字号 评论关闭

1.概况

Apache的.htaccess功能强大,但是用法也比较奇特,因此每次使用都是查遍互联网。为了同时给服务器配置多个虚拟主机,以及给某一域名配置多个二级域名,可以在htaccess中创建多个VitualHost段,但是数量多时这样操作就太麻烦,而且要重启Apache。为了配置简单,可以使用正则表达式匹配,并且为了方便增删二级域名将域名和目录对写到单独的vhost文件,便于修改。

2.配置多个域名虚拟主机

需求:

·使用本机地址127.0.0.1访问时进入的服务器管理页面,包括phpMyAdmin等;

·使用域名sample1.com访问时,进入应用程序一。

配置:

<VirtualHost 127.0.0.1>

    ServerName localhost

    DocumentRoot "%APMXE%/htdocs"

 

    <Directory "%APMXE%/htdocs">

        Options FollowSymLinks

        IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML

        AllowOverride All

        Order allow,deny

        Allow from all

    </Directory>

</VirtualHost>

 

<VirtualHost *>

    ServerName sample1.com

    ServerAlias www.sample1.com

    DocumentRoot "%APMXE%/htdocs/application1"

    <Directory "%APMXE%/htdocs/application1">

        Options FollowSymLinks

        IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML

        AllowOverride All

        Order allow,deny

        Allow from all

    </Directory>

</VirtualHost>

说明:

第一段VirtualHost中的IP地址指明了客户端IP,%APMXE%为webroot所在目录。使用ServerName指定了入口域名为localhost,这样只有本机能够进入管理界面。

第二段VirtualHost接受所有IP地址访问,并且同时域名sample1.com和www.sample1.com两个域名访问。DocumentRoot指明了应用程序所在目录,访问以上域名实际上是访问了Application1目录中的文件。

3.配置多个二级域名

需求:

·使用a.sample2.com、b.sample2.com…不同域名访问不同目录中的程序

·便于动态增删,不同经常修改配置和重启Apache

htaccess配置:

<VirtualHost *>

    ServerName sample2.com

    ServerAlias www.sample2.com

    DocumentRoot "%APMXE%/htdocs/application2 "

 

    <Directory "%APMXE%/htdocs/ application2 ">

        Options FollowSymLinks

        IndexOptions FancyIndexing FoldersFirst NameWidth=* VersionSort XHTML

        AllowOverride All

        Order allow,deny

        Allow from all

    </Directory>

    RewriteEngine on

    RewriteMap vhost txt:C:/apmxe/etc/vhost.map

    RewriteMap lowercase int:tolower

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

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

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

</VirtualHost>

vhost.map文件

a.sample.com C:/apmxe/htdocs/a

doc.sample.com C:/apmxe/htdocs/doc

ec.sample.com C:/apmxe/htdocs/ec

test.sample.com C:/apmxe/htdocs/test

说明:

VirtualHost中前半部分与上文一致,但是后半部分使用了RewriteEngine。通过将vhost.map文件中的域名、目录读取到vhost变量,并在RewriteCond中用正则表达式匹配二级域名,并重写到相应的目录。

4.总结

编写htaccess虽是小事,但是经常要花费大量时间进行调试。关于文档:Apache官网中自带的文档是唯一的标准,值得细细研读,其他搜索到的资料大多是示例。关于调试:可以单独配置测试用的环境,结合文档和资料尝试,重定向到php脚本之类,把HTTP GET/POST信息输出到网页。

抱歉!评论已关闭.