关于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.dev或http://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/
提前致谢。
答案 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/
不同。