不同的子目录有不同的虚拟主机(Apache)?

不同的子目录有不同的虚拟主机(Apache)?

我想为 150 个用户托管一个网页。每个用户都会通过 url 拥有一个唯一的网页url/username/index.html。这里用户名对于所有用户来说都是独一无二的,其余的一切仍然是通用的。

那么我需要在 Apache Server 中创建 150 个虚拟主机还是有其他出路?

答案1

您可以启用每个用户的 Web 目录mod_用户目录哪些地图

http://example.com/~username/index.html

到对应的文件

/home/username/public_html/index.html

默认在用户目录中。

要摆脱波浪号,您可以使用 Apache 的重写引擎并禁止访问所有以 es 开头的 URL,~并使用Aliases 将各个路径映射到其用户目录。

将其添加到您的 VirtualHost 配置中:

RewriteEngine On
# forbid URLs starting with /~
RewriteRule ^/~  -  [F]

# map individual paths to user dirs
Alias /bart    /home/bart/public_html
Alias /homer   /home/homer/public_html
Alias /lisa    /home/lisa/public_html
Alias /maggie  /home/maggie/public_html
# ...

如果您不需要从您的 提供任何文件DocumentRoot,您可以使用 1 个AliasMatch而不是 150 个Aliases:

# map all paths to user dirs
AliasMatch ^/([^/]+)(/.*)?$  /home/$1/public_html$2

您需要在您的服务器中启用mod_userdir和,在 Debian 上,您可以通过重新启动来执行此操作。mod_rewritea2enmod

sudo a2enmod userdir rewrite
sudo service apache2 restart

答案2

这甚至无法通过虚拟主机完成,因为您需要不同的主机名(或端口)来区分它们。

这只是一台主机,具有针对不同用户的子目录。因此,您可能必须(或至少想要)为每个子目录设置不同的文件权限。

相关内容