基于名称的apache虚拟主机配置中的默认网站

时间:2014-05-31 00:14:25

标签: apache web default virtualhost

我正在使用基于名称的虚拟主机配置,以服务于不同的网站 来自相同的IP地址。例如:

http://www.myserver.com/website1
http://www.myserver.com/website2
http://www.myserver.com/website3
...
http://www.myserver.com/websiten

所有这些都存储在我的服务器中,目录为:

/var/www/website1
/var/www/website2
/var/www/website3
...
/var/www/websiten

我想在浏览网址时使用website1作为默认网站:

http://www.myserver.com

为此,我尝试了这种方法:

<VirtualHost *:80>
    DocumentRoot /var/www
    ServerName www.myserver.com

    Alias / /var/www/website1       ### ALIAS HERE

    <Directory /var/www/website1>
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /var/www/website2>
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>

    ...

    <Directory /var/www/websiten>
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

但它不起作用。请帮忙。

2 个答案:

答案 0 :(得分:0)

为什么不像这样创建主机文件:

<VirtualHost *:80>
    ServerName www.myserver.com        
    DocumentRoot "/var/www/website1"
</VirtualHost>

然后在var / www / website1 / dir中创建符号链接以指向其他目录?

cd /var/www/website1/
ln -s /var/www/website2/ website2
ln -s /var/www/website3/ website3

如果您有不同的域名,那么您可以像没有符号链接一样配置vhost,第一个实例使用ServerAlias指令:

<VirtualHost *:80>
    ServerName myserver.com
    ServerAlias www.myserver.com
    DocumentRoot "/var/www/website1"
</VirtualHost>
<VirtualHost *:80>
    ServerName trac.myserver.com
    DocumentRoot "/var/www/website2"
</VirtualHost>

答案 1 :(得分:0)

我终于解决了我的问题。我已经取代了

Alias / /var/www/website1       ### ALIAS HERE

由此目录部分:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    RedirectMatch ^/$ /website1/
</Directory>

RedirectMatch修复了我的问题。现在,当我浏览此网址时:

http://www.myserver.com

它会自动转换为:

http://www.myserver.com/website1/

我不确定这是否是解决我问题的最佳方法,但至少,它可以按预期工作。这可以标记为[已解决]。

提前感谢您的帮助! :)