Silex app->重定向与路由不匹配

时间:2014-03-03 09:20:32

标签: php redirect silex

让我的应用程序在localhost上运行,路径为:localhost/silex/web/index.php,定义了下面代码中的路由,我希望访问localhost/silex/web/index.php/redirect 重定向我到{{ 1}}并显示'foo'。相反,它会将我重定向到localhost/silex/web/index.php/foo

我是Silex的新手,也许我弄错了。有人可以解释问题出在哪里吗?它是正确的行为,它应该重定向绝对路径?感谢。

localhost/foo

2 个答案:

答案 0 :(得分:23)

redirect网址要求网址重定向,而不是应用内路由。试试这种方式:

$app->register(new Silex\Provider\UrlGeneratorServiceProvider());

$app->get('/foo', function() {
    return new Response('foo');
})->bind("foo"); // this is the route name

$app->get('/redirect', function() use ($app) {
    return $app->redirect($app["url_generator"]->generate("foo"));
});

答案 1 :(得分:4)

对于不会更改请求的网址的内部重定向,您还可以使用子请求:

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;

$app->get('/redirect', function() use ($app) {
   $subRequest = Request::create('/foo');
   return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
});

另见Making sub-Requests