【问题标题】:Apache alias virtual hostApache 别名虚拟主机
【发布时间】:2011-11-04 17:40:16
【问题描述】:

我有两个应用程序在同一台服务器上运行,我想从 url 中的子路径提供一个(即):

  • foo.com -> /var/www/foo
  • foo.com/bar -> /var/www/bar

我正在尝试使用别名但不工作:

<VirtualHost *:80>
  ServerAdmin webmaster@foo.com
  ServerName foo.com
  DocumentRoot /webapps/foo/current/public
  <Directory /webapps/foo/current/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
  RailsEnv staging
  Alias /blog /webapps/blog/current
 <Directory /webapps/blog/current>
   allow from all
   Options +Indexes
 </Directory>

你知道为什么这不起作用吗?

我也尝试了 serverpath 指令,但没有成功。

您知道如何实现吗?

提前致谢。

【问题讨论】:

  • 您的虚拟主机是否正常工作?因为如果你需要通过www. 以及域的根访问它,我会说你需要一个ServerAlias www.foo.com...
  • 另外,这两个应用程序是否使用任何mod_rewriteing?
  • 哦,对不起,地址实际上没有www。我在帖子上解决了这个问题。虚拟主机正在工作,我可以访问它,但是如果我去 /blogs/ 它什么也不做。两个应用程序的 .httaccess 中都有 mon_rewrite
  • 你得到了什么? 404? Apache 日志中有什么?你是否使用[PT] 重写/blogs 目录的规则?
  • 我得到一个由 /var/www/foo 处理的 404。我没有 [PT] 重写规则。实际上我没有重写 /blog ......我正在使用其他东西。我应该重写和别名以使其正常工作吗?

标签: apache virtualhost mod-alias


【解决方案1】:

您是否考虑过为您的其他应用程序使用另一个单独的子域,例如 bar.foo.com

你是这样设置的:

<VirtualHost *:80>
    ServerAdmin webmaster@foo.com
    DocumentRoot /var/www/foo
    ServerName foo.com
    ServerAlias foo.com www.foo.com
    ErrorLog logs/foo.com_Error_Log
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin webmaster@foo.com
    DocumentRoot /var/www/bar
    ServerName bar.foo.com
    ErrorLog logs/bar.foo.com_Error_Log
</VirtualHost>

【讨论】:

    【解决方案2】:

    使用AliasMatch 代替Alias

    AliasMatch ^/bar/?(.*) /var/www/bar/$1
    

    或者,在你的情况下:

    AliasMatch ^/blog/?(.*) /webapps/blog/current/$1
    

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 2021-03-22
      • 2011-06-19
      • 2013-09-10
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2012-04-26
      相关资源
      最近更新 更多