我刚刚买了一台全新的 Linux 服务器(Debian Stable)。该服务器主要用于网站托管和网站开发。
我安装了 Apache2、PHP5 和 MySQL,它们一切正常。
我组织网站的方式是使用以下路径:/var/www/username/website.com
现在我希望服务器自动“创建”/识别子域。
/var/www/用户名/sub.website.com >http://sub.website.com
我不想让上述情况自动发生。该怎么做?
答案1
最好的方法是将所有网站的链接放在特定目录中,然后执行以下操作:
<VirtualHost *:80>
RewriteEngine On
RewriteMap lowercase int:tolower
# if already rewitten and we have the right path, stop right here
RewriteRule ^(/where/your/sites/are/[^/]+/.*)$ $1 [L]
RewriteRule ^(.+) ${lowercase:%{SERVER_NAME}}$1 [C]
RewriteRule ^(www\.)?([^/]+)/(.*)$ /where/your/sites/are/$2/$3 [L,E=VHOST_ROOT:/where/your/sites/are/$2/]
</VirtualHost>
答案2
您可以使用海量虚拟主机。就您而言,由于路径中的“/username/”,您将无法在主 apache 配置中使用它,但您可以为每个用户创建一个虚拟主机,然后在虚拟主机中使用批量虚拟主机。
例子:
<VirtualHost *:80>
ServerName domain.tld
ServerAlias *.domain.tld
VirtualDocumentRoot /var/www/user1/%0/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.tld
ServerAlias *.domain2.tld
VirtualDocumentRoot /var/www/user2/%0/
</VirtualHost>
...
使用 mod rewrite 你可以让 domain.tld 重写并指向 www 目录