Linux Apache虚拟主机配置

Linux Apache虚拟主机配置,linux,apache,ubuntu,Linux,Apache,Ubuntu,我试图设置两个虚拟主机(example.com.conf和test.com.conf): ServerName example.com ServerAlias www.example.com 服务器管理员webmaster@localhost DocumentRoot/var/www/example.com/public\u html ErrorLog${APACHE_LOG_DIR}/error.LOG CustomLog${APACHE\u LOG\u DIR}/access.LOG组合

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


ServerName example.com
ServerAlias www.example.com
服务器管理员webmaster@localhost
DocumentRoot/var/www/example.com/public\u html
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合


服务器管理员admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot/var/www/test.com/public\u html
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合


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

听起来您可以使用for 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
DocumentRoot“/var/www/example.com”
重新启动发动机
重写规则“'/var/www/example.com/public\u html”
# ...
DocumentRoot“/var/www/example.com/public\u html”
服务器名本地主机
服务器路径“/示例/”
重新启动发动机
重写规则“^(/sub1/*)”/var/www/example$1”
# ...
DocumentRoot“/var/www/test.com/public\u html”
服务器名本地主机
服务器路径“/test/”
重新启动发动机
重写规则“^(/sub2/*)”/var/www/test$1”
# ...

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

如果您想浏览到任何虚拟主机下的这些文件夹,例如,那么您只需要在任何活动虚拟主机的末尾附加一个位置标记

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

<Location "/example.com">
    Alias "/var/www/example.com/public_html"
</Location>

<Location "/test.com">
    Alias "/var/www/test.com/public_html"
</Location>

服务器名本地主机
服务器管理员webmaster@localhost
DocumentRoot/var/www
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
别名“/var/www/example.com/public_html”
别名“/var/www/test.com/public_html”
或者,如果您不希望它在其他任何地方可用,也可以将其放在虚拟主机中

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

          <Location "/test.com">
              Alias "/var/www/test.com/public_html"
          </Location>
</VirtualHost>

服务器名本地主机
服务器管理员webmaster@localhost
DocumentRoot/var/www
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
别名“/var/www/example.com/public_html”
别名“/var/www/test.com/public_html”

您设置的ip应该是我的本地主机ip?示例路径有效,但找不到测试路径抛出错误。我没有添加第一个vhost,这并不重要,对吗?只是默认为example确定我没有添加主主机。我不知道为什么测试路径不起作用,我不需要创建两个单独的conf文件,只需将这个locate标记添加到主conf inside sites available文件夹中即可。我很好奇为什么你不直接访问它们,因为你的其他虚拟主机对它们自己的域是有效的我真的不知道我尝试了你的解决方案,但出现了一个错误,说别名不允许它说别名不允许在控制台上重新启动web服务器时,或当你在浏览器中浏览它时?
<VirtualHost *:80>
    ServerName localhost
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<Location "/example.com">
    Alias "/var/www/example.com/public_html"
</Location>

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

          <Location "/test.com">
              Alias "/var/www/test.com/public_html"
          </Location>
</VirtualHost>