是否有最佳实践只能将PHP框架部分集成到网站的子目录中?

时间:2015-01-15 15:34:36

标签: php .htaccess laravel

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我认为路由不会成为问题(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',
// ...