我想在域中托管多个laravel项目作为子文件夹,因此对于一个项目,laravel代码库将驻留在somedomain.com/project1,另一个项目位于somedomain.com/project2,依此类推。
有没有办法告诉laravel文档根实际上是在域的顶级目录的子文件夹而不是顶级目录本身?
我以前将每个项目设置为二级域,每个项目都在Apache VirtualHost指令中有自己的DocumentRoot配置(例如project1.somedomain.com& project2.somedomain.com),但我想切换到使用子目录并将一个顶级目录作为Apache DocRoot,将各个项目作为子文件夹。
这样做的最佳方式是什么?
答案 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
)