是否有仅在网站的子目录中部分集成PHP框架的最佳实践


Is there a best practice for only partially integrating a PHP framework in a sub-directory of a website?

我希望这个问题不是宽泛或主观的,但我正在寻找的是是否有(或是否)在现有网站中实现Laravel框架的成熟方法。

我们

目前正在为我们的网站使用自定义CMS,它涵盖了我们95%的需求。但是,我想创建一个子目录,其中所有子目录都实现了 Laravel。我担心的是,我不完全确定 Laravel 路由的内部工作原理(我不确定我们的 CMS 是否也在幕后进行自己的路由),所以我不希望我们的 CMS 踩到 Laravel 的脚趾的冲突 URI 问题,反之亦然。

我对.htaccess

规则只是稍微熟悉一点,但是(Laravel子目录中的单独.htaccess)会是实现Laravel路由的关键,从该文件夹开始,而不是网站上的任何其他页面?如果我们的CMS确实执行自己的路由,较低级别的.htaccess会覆盖较高级别的.htaccess吗?

这些是否对开发后期可能出现的问题提出了任何危险信号?

我认为路由不会成为问题(从路由的角度来看,Laravel通常在子目录中工作得很好)。如果你使用Laravel的URL助手,你一切都很好。

Laravel在子目录中更严重的问题是安全性。为了避免每个人都可以访问整个框架代码,您需要将public目录和框架的其余部分分开。

我建议这种结构:

- laravel_app
--- app
--- bootstrap
--- vendor
--- ...
- document_root
--- your cms stuff
--- laravel     (laravel "public" directory renamed to whatever url you want it under)
------ index.php
------ .htaccess
------ assets

要完成这项工作,您必须编辑两个文件:

public/index.php(现document_root/laravel/index.php

require __DIR__.'/../../laravel_app/bootstrap/autoload.php';
$app = require_once __DIR__.'/../../laravel_app/bootstrap/start.php';
$app->run();

app/bootstrap/paths.php (现laravel_app/app/bootstrap/paths.php

// ...
'public' => __DIR__.'/../../document_root/laravel',
// ...