13

在我/var/www的网站中,我有许多网站(goodsite、badsite、uglysite)。现在它们被mydomain.com/goodsite等访问。

我想要的是一个站点,特别是丑陋的站点,可供访问uglysite.mydomain.com-其他站点保持原样。

我尝试了各种摆弄 the.htaccess (in /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 也直接映射到uglysite。

<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>

以上内容已添加到我的 sites-enabled/000-default 文件中。这让丑陋的site.mydomain.com 正常工作,但随后 mydomain.com 映射到同一个东西!

有没有一种简单的方法来做我打算做的事情?提前致谢。

4

1 回答 1

20

您应该将丑陋的网站制作成第二个文件,而不是修改 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>

丑陋的网站:

<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

于 2012-07-17T13:13:42.650 回答