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小时内删除。
发表评论