将Laravel包含在自定义PHP脚本中并路由到控制器

时间:2015-01-08 11:51:56

标签: php url laravel laravel-4 routing

假设有一个基于Web的PHP项目,它使用一个独立的框架,还包含一个Laravel 4.2的文件夹:

project/
    laravel/ (Laravel install)
        app/
            routes.php
        public/
            index.php
    index.php
    test.php
    .htaccess

.htaccess 文件将每个查询重写为独立框架的 index.php ,除非请求PHP脚本(例如, project / test.php < / em>的)。

在这种情况下, test.php 包含require laravel/public/index.php以包含Laravel的 index.php 脚本。访问它的URI是http://example.com/test.php

如何使用Laravel's routing来获取此脚本?我试过这个:

Route::get('/test.php', function()
{
    echo 'success';exit;
});

但这不起作用(我已经尝试过 test.php 而只是测试)。转储Route::getCurrentRoute()输出:

object(Illuminate\Routing\Route)[126]
  protected 'uri' => string '/' (length=1)
  ...
  protected 'compiled' => 
    object(Symfony\Component\Routing\CompiledRoute)[135]
      ...
      private 'staticPrefix' => string '/' (length=1)
      ...

是否可以访问http://example.com/test.php并让Laravel的路由看到它已被请求/test/test.php,而无需更改独立框架的 .htaccess 文件?

1 个答案:

答案 0 :(得分:1)

您不必使用Laravel路由,您可以使用纯PHP绕过它:

if($_SERVER['REQUEST_URI'] === '/test.php')
{
    exit('success');
}

但是在你的情况下,你可能应该使用.htaccess将所有请求重定向到Laravel,并在Laravel不处理页面时回退到root index.php:

App::missing(function($exception)
{
    include('../../index.php');
    exit;
});