2012-12-05 52 views
0

我为cms开发模块。捕获所有子域?我的本地主机上的

因此我有很多的URL像这样:

cart.cfox.dev 
blog.cfox.dev 
orders.cfox.dev 

该地图可以

/无功/网络/ CFOX /模块/购物车
/无功/网络/ CFOX /模块/博客
在/ var/WWW/CFOX /模块/订单

每次我安装一个新的模块,我创建了一个新的VI实际主机。

但他们都改变了一个单词相同。

我想知道的是,如果有办法让一个虚拟主机处理所有这些。

另一种是我的主机文件已满的

127.0.0.1 cart.cfox.dev
127.0.0.1 blog.cfox.dev
127.0.0.1 orders.cfox.dev

我们可以在那里做同样的事情吗?

回答

1

我认为处理这些虚拟主机的最佳方式是VirtualDocumentRoot。特别是在Apache 2.4中,据我所知,DocumentRoot已经不错了。

UseCanonicalName Off 
VirtualDocumentRoot /var/www/cfox/modules/%1 

<Directory "/var/www/cfox/modules/*"> 
    # Apache < 2.4 
    <IfModule !mod_authz_core.c> 
     Allow from all 
    </IfModule> 
    # Apache >= 2.4 
    <IfModule mod_authz_core.c> 
     Require all granted 
    </IfModule> 
</Directory> 

我们可以做同样的事情呢?

不幸的是,没有。

+0

我们会怎样使这个日志每个它自己的日志文件(例如cart.error.log) – Hailwood

+0

对不起,你不能有单独的ErrorLog没有真正的。 – julp

1

您可以使用mod_rewrite来完成。

设置默认的Apache的虚拟主机与DocumentRoot/var/www和地点有以下.htaccess

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.([^\.]+)\.dev$ [NC] 
RewriteCond %{REQUEST_URI} !^/.+/modules/.+/.*$ 
RewriteRule .* /%2/modules/%1%{REQUEST_URI} [QSA,L] 

当然,你必须确保,你的apache读取.htaccess文件(AllowOverride