将域根目录路由到一个应用程序,将子uri路由到Apache中的另一个应用程序

时间:2014-03-26 07:27:03

标签: apache routing virtual-hosts

我正在尝试使用Apache在一个域上运行两个应用程序,主应用程序位于域“root”www.sitename.com,而子应用程序位于www.sitename.com/blog

目前我正试图以这种方式实现它:

<VirtualHost *:80>
    ServerName www.sitename.com
    DocumentRoot /var/www/sitename/main/public/
    Alias /blog /var/www/sitename/blog/
</VirtualHost>

目前这适用于博客应用的根目录。转到www.sitename.com/blog加载博客根目录,然后转到www.sitename.com获取主应用程序。成功检索静态文件。

但是,/blog以外的任何网址,例如/blog/postname由主应用处理并获得404。

我还尝试使用AliasMatch专门向博客应用/blog发送index.php个请求。这有助于避免在更深层网址上使用404,但是对博客应用程序的静态文件的请求中断了。

如果可能的话,我想要的是:

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

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

即,所有对/blog的请求只是被路由到/blog/目录并从那里处理。但你无法用虚拟主机那样做。

应该如何实现?

1 个答案:

答案 0 :(得分:0)

如果可以的话,我可能只是重定向/博客到blog.sitename.com并在那里托管你的博客。这样可以处理相对与绝对链接,并解决在单个根上拥有两个应用程序的问题。当然,它们仍然可以位于同一台服务器上,只是位于不同的VirtualHosts中。

如果您不能或不想,Alias应该可以使用。不过,我会确保斜线匹配。所以Alias /blog/ /var/www/sitename/blog/Alias /blog /var/www/sitename/blog

另见the Apache documentation on Alias