htaccess示例:多虚拟主机配置
1. 概况
Apache的.htaccess功能强大,但是用法也比较奇特,因此每次使用都是查遍互联网。为了同时给服务器配置多个虚拟主机,以及给某一域名配置多个二级域名,可以在htaccess中创建多个VitualHost段,但是数量多时这样操作就太麻烦,而且要重启Apache。为了配置简单,可以使用正则表达式匹配,并且为了方便增删二级域名将域名和目录对写到单独的vhost文件,便于修改。
2. 配置多个域名虚拟主机
需求:
·使用本机地址127.0.0.1访问时进入的服务器管理页面,包括phpMyAdmin等;
·使用域名sample1访问时,进入应用程序一。
配置:
<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
    ServerAlias www.sample1
    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和www.sample1两个域名访问。DocumentRoot指明了应用程序所在目录,访问以上域名实际上是访问了Application1目录中的文件。
3. 配置多个二级域名
需求:
·使用a.sample2、b.sample2…不同域名访问不同目录中的程序
·便于动态增删,不同经常修改配置和重启Apache
htaccess配置:
<VirtualHost *>
    ServerName sample2
    ServerAlias www.sample2
正则匹配等级域名网址    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 C:/apmxe/htdocs/a
doc.sample C:/apmxe/htdocs/doc
ec.sample C:/apmxe/htdocs/ec
test.sample C:/apmxe/htdocs/test
说明:
VirtualHost中前半部分与上文一致,但是后半部分使用了RewriteEngine。通过将vhost.map文件中的域名、目录读取到vhost变量,并在RewriteCond中用正则表达式匹配二级域名,并重写到相应的目录。
4. 总结
编写htaccess虽是小事,但是经常要花费大量时间进行调试。关于文档:Apache中自带的文档是唯一的标准,值得细细研读,其他搜索到的资料大多是示例。关于调试:可以单独配置测试用的环境,结合文档和资料尝试,重定向到php脚本之类,把HTTP GET/POST信息输出到网页。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。