Apache虚拟主机配置

时间:2016-06-03 22:12:17

标签: linux apache ubuntu

我想设置两个虚拟主机(example.com.conf和test.com.conf):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

问题是,如果我在浏览器中使用localhost,则会显示网站www.example.com。如果我键入localhost / test.com,则找不到错误。我的目标应该是使用localhost / example.com和localhost / test.com来处理这两个网站。

2 个答案:

答案 0 :(得分:0)

听起来你可以使用ServerPath directive来表示apache,在这种情况下,这样的事情应该可行:

<VirtualHost 127.0.0.1>
# primary vhost
DocumentRoot "/var/www/example.com"
RewriteEngine On
RewriteRule "." "/var/www/example.com/public_html"
# ...
</VirtualHost>

<VirtualHost 127.0.0.1>
DocumentRoot "/var/www/example.com/public_html"
ServerName localhost
ServerPath "/example/"
RewriteEngine On
RewriteRule "^(/sub1/.*)" "/var/www/example$1"
# ...
</VirtualHost>

<VirtualHost 127.0.0.1>
DocumentRoot "/var/www/test.com/public_html"
ServerName localhost
ServerPath "/test/"
RewriteEngine On
RewriteRule "^(/sub2/.*)" "/var/www/test$1"
# ...
</VirtualHost>

第一个Vhost将使localhost默认为example.com页面。

答案 1 :(得分:0)

如果您想浏览任何虚拟主机下的这些文件夹,例如http://localhost/test.com,那么您只需要在任何活动虚拟主机末尾附加位置标记内的alias directive

formB

如果您不想在其他任何地方使用

,您可以将其放入虚拟主机中
FormB