【问题标题】:Catch all sub domains?捕获所有子域?
【发布时间】:2012-11-23 19:39:36
【问题描述】:

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

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

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

映射到哪个

/var/www/cfox/modules/cart
/var/www/cfox/modules/博客
/var/www/cfox/modules/orders

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

但都一样,只是换了一个字。

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

另一个是我的hosts文件满了

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

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

【问题讨论】:

    标签: apache ubuntu subdomain virtualhost hosts


    【解决方案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>
    

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

    很遗憾,没有。

    【讨论】:

    • 我们如何将这个日志记录到它自己的日志文件中(例如 cart.error.log)
    • 抱歉,如果没有真正的 ,您不能有单独的 ErrorLog。
    【解决方案2】:

    您可以使用mod_rewrite 来完成。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2014-01-13
      • 2014-01-25
      • 2016-04-05
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      相关资源
      最近更新 更多