Простое сомнение относительно Silex Routing. Я очень новичок в 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();
проблема касается маршрутизации, она работает, пока мы пытаемся получить доступ к дому, или / привет (http://mysite.dev или же http://mysite.dev/hello ). но если я попытаюсь получить доступ
ссылка, которая не существует, как это — http://mysite.dev/hello/blah он вернет страницу 404 ($ app-> error ()), как и ожидалось, но если я удалю / бла часть и попытаюсь снова войти в браузер (http://mysite.dev/hello) — до сих пор я получаю 404, чтобы получить доступ к сайту, я должен пройти весь путь обратно до root (т.е. http://mysite.dev). Я не знаю, пропускаю ли я какой-нибудь конфиг или что-то еще или, может быть, глупый, но, пожалуйста, я начинающий в коде.
ЗДЕСЬ ОТЛИЧНЫЙ ПРИМЕР: https://getcomposer.org/doc/00-intro.md это приведет вас к начальной странице документации композитора, и если вы добавите что-то в конце этого URL, как это https://getcomposer.org/doc/00-intro.md/blah — это даст вам «Извините, страница, которую вы ищете, не может быть найдена». error, хорошо, и если вы хотите вернуться на начальную страницу, если вы попытаетесь удалить / blah и войти снова, никоим образом вы не получите ту же страницу с ошибкой, кто-нибудь может объяснить это.
то же самое здесь http://silex.sensiolabs.org/doc/
Заранее спасибо.
Маршрут не ожидает косой черты. Это ожидаемое поведение, которое подробно обсуждалось: 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/
,
Других решений пока нет …