将 Laravel 包含到自定义 PHP 脚本中并路由到控制器
Include Laravel into custom PHP script and routing to a controller
假设有一个基于 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)。
在这种情况下,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 和 test)。转储 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 文件?
你不是被强制使用Laravel路由,你可以用纯PHP绕过它:
if($_SERVER['REQUEST_URI'] === '/test.php')
{
exit('success');
}
但在您的情况下,您可能应该使用 .htaccess 将所有请求重定向到 Laravel,并在 Laravel 不处理页面时回退到根目录 index.php:
App::missing(function($exception)
{
include('../../index.php');
exit;
});
假设有一个基于 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)。
在这种情况下,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 和 test)。转储 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 文件?
你不是被强制使用Laravel路由,你可以用纯PHP绕过它:
if($_SERVER['REQUEST_URI'] === '/test.php')
{
exit('success');
}
但在您的情况下,您可能应该使用 .htaccess 将所有请求重定向到 Laravel,并在 Laravel 不处理页面时回退到根目录 index.php:
App::missing(function($exception)
{
include('../../index.php');
exit;
});