自动Apache别名定义

我有一个文件夹完整的网站: /var/www

我有一个域名: example.com

我想在我的httpd.conf中编写一个规则,它将为/var/www每个站点设置一个别名

例如: /var/www/hello/public可以通过example.com/hello访问。

目前,我只是手动为每个站点写入别名定义: Alias /hello "/var/www/hello/public/"

最简单的解决scheme是使用mod_vhost_alias 。 它并不完全符合你所描述的,但它非常接近。

  1. 启用vhost_alias_module使用您的分布偏好的任何技术(在基于Debian的发行版上的a2enmod vhost_alias )。
  2. 将这些指令添加到httpd.conf

     UseCanonicalName Off VirtualDocumentRoot /var/www/%1/public 
  3. 为example.com创build通配符DNS条目,以便将example.com的任何子域定向到您的服务器。

现在访问“hello.example.com”将加载位于/var/www/hello/public的站点。

另外,如Gabor所提到的,你可以使用mod_rewrite 。 我要概述的解决scheme假设您在example.com下没有其他内容。

  1. 启用mod_rewrite使用您的发行版更喜欢的机制( a2enmod rewrite在基于Debian的发行版上a2enmod rewrite )。
  2. 将这些指令添加到example.com的VirtualHost

     RewriteEngine On RewriteRule ^([^/]+)(.*) /var/www/$1/public/$2 

这将重写“example.com/hello/steve”到/var/www/hello/public/steve的请求。

为您的域名和webroot创build一个虚拟主机。 写一个重写规则,而不是别名。