apache将单个子域映射到文件夹

在我的/ var / www我有一些网站(好网站,不好的网站,丑陋的网站).现在他们可以通过mydomain.com/goodsite等访问.

我想要的是一个网站,特别是丑陋的网站,可以通过uglysite.mydomain.com访问 – 其他网站保持原样.

我尝试过各种各样的方法来处理.htaccess(在/ var / www中).注意我启用了mod-rewrite和mod vhost-alias.

RewriteEngine on
RewriteCond %{HTTP_HOST} ^uglysite\.mydomain\.com$[NC]
RewriteCond %{REQUEST_URI} !^/uglysite/
RewriteRule ^(.*)$/uglysite/$1 [L]

最后发生的事情是,mydomain.com和uglysite.mydomain.com总是映射到相同的东西(即/ var / www上的索引).我尝试添加一个新的虚拟主机,并惊讶地发现,uglysite.mydomain.com映射正确,但是mydomain.com也直接映射到丑网站.

<Virtualhost uglysite.mydomain.com:80>
       ServerName uglysite.mydomain.com
       ServerAdmin www@localhost
       DocumentRoot "/var/www/"
       AccessFileName .htaccess
       <Directory "/var/www/uglysite">
               Order allow,deny
               Allow from All
               AllowOverride All
       </Directory>
</VirtualHost>

以上已添加到我的启用网站的/ 000默认文件.这让uglysite.mydomain.com正常工作,但是mydomain.com映射到同一件事!

有没有一个直接的方式来做我想要做的事情?提前致谢.

您应该将丑陋的网站变成第二个文件,而不是修改000-default

所以,拿一个000-default文件的副本,按照你已经做的那样修改子域,并将目录修改为/ path / to / site

000默认:

<Virtualhost *:80>
       ServerName mydomain.com
       ServerAdmin www@localhost
       ServerAlias mydomain.com
       DocumentRoot "/var/www/goodsite"
       AccessFileName .htaccess
       <Directory "/var/www/goodiste">
               Order allow,deny
               Allow from All
               AllowOverride All
       </Directory>
</VirtualHost>

uglysite:

<Virtualhost *:80>
       ServerName uglysite.mydomain.com
       ServerAlias uglysite.mydomain.com
       ServerAdmin www@localhost
       DocumentRoot "/var/www/uglysite"
       AccessFileName .htaccess
       <Directory "/var/www/uglysite">
               Order allow,deny
               Allow from All
               AllowOverride All
       </Directory>
</VirtualHost>

另请注意,在上面的示例中,我已经修改了DocumentRoot以指向要从中提供文件的目录

编辑:virtualhosts设置为*:80,因为您的站点指向自己的ip

翻译自:https://stackoverflow.com/questions/11523258/apache-map-single-subdomain-to-folder

转载注明原文:apache将单个子域映射到文件夹