是否有仅在网站子目录中部分集成 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 的 URI 冲突问题踩到 Laravel 的脚趾,反之亦然。

我只是稍微熟悉 .htaccess 规则,但是(Laravel 子目录中的一个单独的 .htaccess)是否是实现 Laravel 路由开始的关键在该文件夹下,而不是网站上的任何其他页面?如果我们的 CMS 做自己的路由,较低级别的 .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',
// ...