Silex路由问题

时间:2014-10-22 11:58:21

标签: php .htaccess url-routing silex

关于Silex路由的简单怀疑。我对Silex很新,基本上我正在学习它,只要一切顺利,这就是问题(??) -

这是我的index.php - >

    require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();

$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
use Symfony\Component\HttpFoundation\Response;

$app->get('/', function() {
    return 'Hello World!';
});

$app->get('/hello', function() {
    return 'Hello From HELLO!';
});

$app->error(function (\Exception $e, $code) use($app) {
    switch ($code) {
        case 404:
            $message = "Oooops Not Found";
            break;
        default:
            $message = $app['twig']->render('error500.html.twig');
    }
    return new Response($message, $code);
});

$app->run();

问题与路由有关,只要我们尝试访问home或/ hello(http://mysite.devhttp://mysite.dev/hello),它就会正常工作。但如果我试图访问 一个不存在的链接,如下所示 - http://mysite.dev/hello/blah它将按预期返回404页面($ app-> error()),但如果我删除/等待部分并尝试再次输入在浏览器中(http://mysite.dev/hello) - 我仍然得到404,访问该网站我必须一直回到root(即http://mysite.dev)。我不知道我是否遗漏了某些配置或其他内容,或者可能是一个愚蠢的配置,但请我在Coding中担任首发。

这是一个很好的例子: - 转到https://getcomposer.org/doc/00-intro.md它将引导您进入作曲家文档入门页面,如果您在此网址末尾添加一些内容,例如https://getcomposer.org/doc/00-intro.md/blah - 它将会给你'抱歉,找不到您要查找的页面。'错误,好的,如果你想回到入门页面,如果你试图删除/等待并再次输入,你仍然无法获得相同的错误页面,任何人都可以解释这个。

同样在这里http://silex.sensiolabs.org/doc/

提前致谢。

1 个答案:

答案 0 :(得分:1)

路线不期待尾随斜线。 Thsi是预期的行为,并且已经详细讨论过:https://github.com/silexphp/Silex/issues/149

建议您定义冗余路径,并使用斜杠隐式:

$app->get('/hello', function() {
    return 'Hello From HELLO!';
});

$app->get('/hello/', function() {
    return 'Hello From HELLO!';
});

由于第二个参数是回调,因此可能是:

$hello_handler = function() {
    return 'Hello From HELLO!';
};
//or
$hello_handler = array($object, 'handler_method');

$app->get('/hello',  $hello_handler);
$app->get('/hello/', $hello_handler);

或者你提出的任何易于使用的方法。

原因是/index.html/index.html/不同。