在Laravel中设置DocumentRoot

时间:2014-04-11 15:29:58

标签: php laravel laravel-4

我想在域中托管多个laravel项目作为子文件夹,因此对于一个项目,laravel代码库将驻留在somedomain.com/project1,另一个项目位于somedomain.com/project2,依此类推。

有没有办法告诉laravel文档根实际上是在域的顶级目录的子文件夹而不是顶级目录本身?

我以前将每个项目设置为二级域,每个项目都在Apache VirtualHost指令中有自己的DocumentRoot配置(例如project1.somedomain.com& project2.somedomain.com),但我想切换到使用子目录并将一个顶级目录作为Apache DocRoot,将各个项目作为子文件夹。

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。但是有一些方法。

首先,通常你会将laravel的public目录作为你的网络服务器的文档根目录。在这种情况下,您将public目录重命名为子文件夹的名称。

您还需要确保您的Laravel代码(即不是public)是public文件夹中的额外级别(因此您可以使代码远离可能的访问权限)。您可能也想将两个单独的应用程序放在自己的文件夹中。现在更改index.php和paths.php文件中的所有路径,以确保每个应用程序都指向正确的支持代码。

你最终会得到这样的东西:

  • /path/to/docroot-parent/
    • app1/
      • app/
      • bootstrap/
        • paths.php'public' => __DIR__.'/../../actualdocroot/app1'
      • ...
    • app2/
      • app/
      • bootstrap/
        • paths.php'public' => __DIR__.'/../../actualdocroot/app2'
      • ...
    • actualdocroot/←webserver在此指向docroot
      • app1/
        • css/
        • js/
        • index.php(指向../../app1/bootstrap/autoload.php../../app1/bootstrap/start.php
      • app2/
        • css/
        • js/
        • index.php(指向../../app2/bootstrap/autoload.php../../app2/bootstrap/start.php