在主网站的 select 子目录中部分集成 Laravel 框架
Partially integrating the Laravel Framework in select sub-directories of a main website
我最近问了 并收到了一些很好的答案,但我意识到这不是一个正确的问题。
我们目前使用的 CMS 可以满足我们网站 95% 的需求,但是对于额外的 5%,我想引入一个 PHP 框架来处理表单 Processing/Validation 、身份验证等。我最初的问题是,是否有可能在我们的站点中有一个子目录来管理所有这些项目。但现在我意识到这种方法需要所有东西都在类似 .../projects URI 的东西中,破坏了我们现在使用 CMS 的一个非常好的 REST 设置(我想要管理的唯一路由是在我自己的应用程序中,而不是整个站点来解决这个问题。
是否可以将Laravel的主文件夹放在根目录下,只包含在我想要的特定子目录或文件中。我想象它就像有多个 public
文件夹,我不确定它是否是 possible/reccommended?我还想象我必须从根本上关闭 Laravel 的路由,这样它就不会踩到 CMS 的脚趾,但我相信我可以为每个文件夹重新打开它,每个文件夹都有自己的 .htaccess
?
我想象的架构看起来像这样:
root
/ \
html laravel
/ \
... [normal page]
/ \ \
/ \ [project]
[project] [normal page]
我读到一点,Zend Framework 是专门为这样的部分集成而制作的,在这种情况下,如果它更适合这项工作,我绝对可以切换。但是,如果 Laravel 可以做到这一点,那就太好了,因为我已经对基础知识相当满意了。
您应该能够很容易地做到这一点。基本步骤包括:
- 修改您的 .htaccess 或 vhost 文件,使 Laravel 托管的每个位置都指向 Laravel 的 public/index.php。您需要首先放置这些更具体的规则,因为 Apache 将遵循它找到的第一个匹配规则。
- [可选]如果要更改 Laravel 项目的文件夹结构,请修改 bootstrap 文件夹中的文件(paths.php、autoload.php 和start.php) 以指向正确的路径,并确保 public/index.php(或您放置的任何位置)可以找到自动加载和启动文件。
- 应该是这样。确保您的 Laravel 路由引用完整路径。
不幸的是,这种方法确实意味着您需要为每个要添加的 Laravel 路由添加一个重写规则。这样,Laravel 就不会干扰您的 CMS 的路由;它只会处理重写到 index.php 的请求。您只需确保重写规则具有更高的优先级,方法是将它们放在 CMS 的一般重写规则之前。
我最近问了
我们目前使用的 CMS 可以满足我们网站 95% 的需求,但是对于额外的 5%,我想引入一个 PHP 框架来处理表单 Processing/Validation 、身份验证等。我最初的问题是,是否有可能在我们的站点中有一个子目录来管理所有这些项目。但现在我意识到这种方法需要所有东西都在类似 .../projects URI 的东西中,破坏了我们现在使用 CMS 的一个非常好的 REST 设置(我想要管理的唯一路由是在我自己的应用程序中,而不是整个站点来解决这个问题。
是否可以将Laravel的主文件夹放在根目录下,只包含在我想要的特定子目录或文件中。我想象它就像有多个 public
文件夹,我不确定它是否是 possible/reccommended?我还想象我必须从根本上关闭 Laravel 的路由,这样它就不会踩到 CMS 的脚趾,但我相信我可以为每个文件夹重新打开它,每个文件夹都有自己的 .htaccess
?
我想象的架构看起来像这样:
root
/ \
html laravel
/ \
... [normal page]
/ \ \
/ \ [project]
[project] [normal page]
我读到一点,Zend Framework 是专门为这样的部分集成而制作的,在这种情况下,如果它更适合这项工作,我绝对可以切换。但是,如果 Laravel 可以做到这一点,那就太好了,因为我已经对基础知识相当满意了。
您应该能够很容易地做到这一点。基本步骤包括:
- 修改您的 .htaccess 或 vhost 文件,使 Laravel 托管的每个位置都指向 Laravel 的 public/index.php。您需要首先放置这些更具体的规则,因为 Apache 将遵循它找到的第一个匹配规则。
- [可选]如果要更改 Laravel 项目的文件夹结构,请修改 bootstrap 文件夹中的文件(paths.php、autoload.php 和start.php) 以指向正确的路径,并确保 public/index.php(或您放置的任何位置)可以找到自动加载和启动文件。
- 应该是这样。确保您的 Laravel 路由引用完整路径。
不幸的是,这种方法确实意味着您需要为每个要添加的 Laravel 路由添加一个重写规则。这样,Laravel 就不会干扰您的 CMS 的路由;它只会处理重写到 index.php 的请求。您只需确保重写规则具有更高的优先级,方法是将它们放在 CMS 的一般重写规则之前。