0

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

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

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

映射到哪个

/var/www/cfox/modules/cart
/var/www/cfox/modules/blog
/var/www/cfox/modules/orders

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

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

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

另一个是我的hosts文件充满了

127.0.0.1 购物车.cfox.dev
127.0.0.1 博客.cfox.dev
127.0.0.1订单.cfox.dev

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

4

2 回答 2

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>

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

抱歉不行。

于 2012-12-05T21:17:29.040 回答
1

您可以使用mod_rewrite.

使用 in设置您的默认 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)

于 2012-12-05T21:30:33.907 回答