自动 Apache 别名定义

自动 Apache 别名定义

我有一个装满网站的文件夹:/var/www

我有一个域名:example.com

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

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

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

答案1

最简单的解决方案是使用mod_vhost_alias相反。它不做确切地正如您所描述的,但非常接近。

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

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

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

或者,正如 Gabor 所提到的,你可以使用mod_rewrite我将要概述的解决方案假设您在 example.com 下没有其他内容。

  1. 使能够mod_rewrite使用您的发行版所喜欢的任何机制(a2enmod rewrite在基于 Debian 的发行版上)。
  2. 将这些指令添加到VirtualHostexample.com:

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

这会将对“example.com/hello/steve”的请求重写为/var/www/hello/public/steve

答案2

为您的域和 webroot 创建 vhost。编写重写规则而不是别名。

相关内容