【发布时间】:2019-06-13 01:15:23
【问题描述】:
我刚刚开始使用 Laravel,并且刚刚完成了一些基本的应用程序。我正在尝试制定一个通过我们的组织更广泛地使用 Laravel 的计划。我试图弄清楚如何在不必创建大量 Apache 虚拟主机的情况下安装多个 Laravel。
在我们公司内,我们有许多部门,每个部门都有各种内部和公共表单和/或应用程序。我们的网站结构都由 Linux 服务器上的同一个 Apache 实例提供服务,我们偶尔会使用虚拟主机来分隔一些特定的部分,而不是部门(因为这真的会让人不知所措)。我们在网络服务器上的结构如下所示:
/
/department1/someapp
/anotherapp
/department2/internalapp
/anotherform
/department3
...and so on
所以人们基本上可以像这样访问它:www.company.com/department1/someapp 等...我们有大约 30 个不同的部门,其中包含一个包含大约 52,000 个 html 和 php 文件的网站,其中混合了程序 php、javascript 和纯html。
因此,我在多次安装时看到的问题会产生类似于必须访问这样的应用程序:
www.company.com/department1/app1/public
app2/public
www.company.com/department2/app1/public etc...
很明显,通过使用 department1.company.com 或 department2.company.com 访问应用程序,虚拟主机会让这看起来更漂亮,但我们不想创建那么多子域。所以我正在寻找一些关于如何做到这一点的更好的想法。
【问题讨论】:
-
有可能。如果需要,您可以将
public文件夹重命名为department1等。然后,您需要覆盖每个应用程序的所有路径,因为出于安全原因,您希望从 Web 可访问目录中删除大部分应用程序。 -
恕我直言,您应该采取额外的工作并使用子域。这将是最可靠的方法。一个 DocRoot 上的多个应用程序很快就会变得混乱和无法维护。
-
@jakub_jo 从必须与所有虚拟主机一起创建的所有内部和外部 DNS 记录的角度来看,它也将变得不可维护。应该有一种方法可以做到这一点,而不必创建大量子域。我想我可以在子目录中安装 Laravel 并使用 .htaccess 删除对子目录根目录的访问权限,然后重写以将它们移动到我们拥有应用程序的每个位置的公共文件夹中。
-
你可以为所有应用使用一个 Laravel 基础吗?只是将行为与路由和“模块”分开?
-
@jakub_jo 这可能可以工作,但我认为我必须在逻辑上将所有部门应用程序分开并将它们放在一个主文件夹下,而不是将它们单独保存部门文件夹,就像现在一样。