在我的本地主机上我为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
我们可以在那里做同样的事情吗?
答案 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
)