将Laravel Framework部分集成到主网站的选定子目录中

时间:2015-01-21 14:45:13

标签: php .htaccess rest laravel frameworks

我最近问a similar question并收到了一些很好的答案,但我发现这不是一个正确的问题。

我们目前使用的CMS在我们的网站上满足了95%的需求,但是对于额外的5%,我想引入一个PHP框架,用于表单处理/验证,身份验证等。我原来的问题是否可以在我们的网站中有一个可以管理所有这些项目的子目录。但是现在我意识到这个方法需要的东西就像...... / projects URI,打破了我们现在使用CMS的一个非常好的REST设置(我想要管理的唯一路由是在我自己的应用程序中,而不是整个网站来解决这个问题。)

是否可以在根目录中安装Laravel的主文件夹,并且只将其包含在我想要的特定子目录或文件中。我想象它只是有多个public文件夹,我不确定它是否可能/推荐?我还想象我必须基本上转向Laravel的路由,以便它不会踩到CMS的脚趾,但我相信我可以为每个文件夹重新打开它们,每个文件夹都有自己的.htaccess?< / p>

我认为架构看起来像这样:

         root
        /   \
      html  laravel
      /   \
     ...   [normal page]
    /   \              \
   /     \              [project] 
[project] [normal page]

我已经读过一些Zend Framework专门针对这样的部分集成,在这种情况下,如果它更适合这项工作,我肯定可以切换。但是如果Laravel可以实现它会很棒,因为我已经对基础知识相当熟悉了。

1 个答案:

答案 0 :(得分:1)

你应该能够相当容易地做到这一点。基本步骤包括:

  • 修改.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的常规重写规则之前,确保重写规则具有更高的优先级。