抓住所有子域名?

时间:2012-12-05 21:02:21

标签: apache ubuntu subdomain virtualhost hosts

在我的本地主机上我为cms开发模块。

因此我有很多这样的网址:

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

映射到

  

的/ var / WWW / CFOX /模块/购物车
  在/ var / WWW / CFOX /模块/博客
  的/ var / WWW / CFOX /模块/订单

每次我设置新模块时,我都会创建一个新的虚拟主机。

但是一个词改变了它们都是一样的。

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

另一个是我的主机文件充满了

  

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

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

2 个答案:

答案 0 :(得分: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>
  

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

不幸的是,没有。

答案 1 :(得分:1)

您可以使用mod_rewrite

DocumentRoot中使用/var/www设置默认的apache虚拟主机,并将其放在.htaccess之后:

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

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