日期:2014-05-16  浏览次数:20982 次

Apache 下域名绑定到子目录
有两种实现方法:
1,在httpd.conf文件结尾处加入如下代码
<VirtualHost m.witmax.cn:80>
ServerAdmin tempgame@hotmail.com
DocumentRoot D:/wwwroot/subdir
ServerName m.witmax.cn
ErrorLog logs/m-error_log.txt
CustomLog logs/m_log.txt common
</VirtualHost>


2.是利用.htaccess文件进行绑定
RewriteEngine on
# 把 m.witmax.cn 改为你要绑定的域名.
RewriteCond %{HTTP_HOST} ^(www.)?m.witmax.cn$
 
# 把 subdir 改为要绑定的目录.
RewriteCond %{REQUEST_URI} !^/subdir/
 
# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
 
# 把 subdir 改为要绑定的目录.
RewriteRule ^(.*)$ /subdir/$1
 
# 把 m.witmax.cn 改为你要绑定的域名
# 把 subdir 改为要绑定的目录.
# subdir/ 后面是首页文件index.php, index.html……
 
RewriteCond %{HTTP_HOST} ^(www.)?m.witmax.cn$
RewriteRule ^(/)?$ subdir/index.php [L]


大致说下。我的需求是  在www目录下有三个文件夹,分别是独立的项目,现在想使用域名给分别指定下。比如a.com绑定到www/a 文件下   b.com绑定到www/b  c.com绑定到www/c

第一种方法,也就是在httpd.conf的文件尾加节点的方法,我试了下确实可以。
不过有个问题,我有三个目录,就意味着要写三个节点,但是我使用其它两个域名,b.com和c.com进行访问的时候,它会自动指定a那个目录,我分明已经指定过目录了。很纠结。

--------------------
第一种方法的问题解决了
如下:
NameVirtualHost *:80  //就是因为没有加这个NameVirtualHost才出现那个情况,引以为戒

<VirtualHost a.com:80>
ServerAdmin lx.xin@qq.com
DocumentRoot c:/wamp/www/a
ServerName a.com
ErrorLog logs/a_log.txt
CustomLog logs/a_log.txt common
</VirtualHost>

<VirtualHost b.com:80>
ServerAdmin lx.xin@qq.com
DocumentRoot c:/wamp/www/b
ServerName b.com
ErrorLog logs/b_log.txt
CustomLog logs/b_log.txt common
</VirtualHost>

<VirtualHost c:80>
ServerAdmin lx.xin@qq.com
DocumentRoot c:/wamp/www/c
ServerName c.com
ErrorLog logs/c_log.txt
CustomLog logs/c_log.txt common
</VirtualHost>

第二种方法,比较晕乎,不过在网上看到说可行,感兴趣的朋友可以试下。
至于第一种方法,还得继续摸索!~有解决方法,会继续进行更新