Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在主网站的选定子目录中部分集成Laravel框架_Php_.htaccess_Rest_Laravel_Frameworks - Fatal编程技术网

Php 在主网站的选定子目录中部分集成Laravel框架

Php 在主网站的选定子目录中部分集成Laravel框架,php,.htaccess,rest,laravel,frameworks,Php,.htaccess,Rest,Laravel,Frameworks,我最近问了一些很好的问题,并得到了一些很好的答案,但我意识到这不是一个完全正确的问题 目前,我们使用的CMS满足了我们网站95%的需求,但对于额外的5%,我想引入一个PHP框架,用于表单处理/验证、身份验证等。我最初的问题是,是否有可能在我们的网站中有一个子目录来管理所有这些项目。但是现在我意识到这个方法需要所有东西都在一个…/projects URI中,打破了我们现在使用CMS的一个很好的REST设置(我唯一想管理的路由是在我自己的应用程序中,而不是整个站点中) 是否可以将Laravel的主文

我最近问了一些很好的问题,并得到了一些很好的答案,但我意识到这不是一个完全正确的问题

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

是否可以将Laravel的主文件夹放在根目录下,并且只将其包含在我想要的特定子目录或文件中。我想象这就像是有多个
公共
文件夹,我不确定这是否可能/推荐?我还认为我必须基本上打开Laravel的路由,这样它就不会踩到CMS的脚趾,但我相信我可以为每个文件夹打开它,每个文件夹都有自己的
.htaccess

我把建筑想象成这样:

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

我已经读到一些Zend框架是专门为这样的部分集成而设计的,在这种情况下,如果它更适合这项工作,我肯定可以切换。但是,如果能够使用Laravel,那就太好了,因为我已经非常熟悉基本知识了。

您应该能够非常轻松地做到这一点。基本步骤包括:

  • 修改.htaccess或vhost文件,使Laravel托管的每个位置指向Laravel的public/index.php。您需要将这些更具体的规则放在第一位,因为Apache将遵循它找到的第一条匹配规则
  • [可选]如果要更改Laravel项目的文件夹结构,请修改引导文件夹中的文件(path.php、autoload.php和start.php)以指向正确的路径,并确保public/index.php(或放在任何位置)可以找到自动加载和启动文件
  • 应该是这样。确保您的Laravel路线参考完整路径

不幸的是,这种方法确实意味着您需要为每个要添加的Laravel路由添加重写规则。这样,Laravel就不会干扰CMS的路由;它将只处理被重写到index.php的请求。您只需确保重写规则具有更高的优先级,将它们放在CMS的一般重写规则之前。

非常感谢。听起来好像可以。使用.htaccess而不是vhost有好处吗?我通常更喜欢使用vhost,因为它允许您将所有配置保存在一个位置。htaccess是基于每个目录的。但这种方法应该适用于任何一种方法。