Подтвердить что ты не робот

Как использовать тонкое перенаправление

У меня проблема. Я использую slim, и у меня есть маршрут для моей главной страницы:

$app->get('/', function() use ($app) { ... 

В одном из моих контроллеров я хочу перенаправить на главную страницу, поэтому пишу

$app->response->redirect('/', 303);

Но вместо перенаправления на маршрут '/' я перенаправляюсь к корню моего локального сервера, который http://localhost/

Что я делаю неправильно? Как использовать метод перенаправления?

4b9b3361

Ответ 1

Slim позволяет вам называть маршруты, а затем перенаправлять их обратно на основе этого имени, используя urlFor(). В вашем примере измените свой маршрут на:

$app->get('/', function() use ($app) { ... })->name("root");

а затем ваше перенаправление будет:

$app->response->redirect($app->urlFor('root'), 303);

Для получения дополнительной информации см. "Помощники маршрута" в документации Slim.

Ответ 5

//Set Default index or home page
$app->get('/', function() use ($app) {
      $app->response->redirect('login.php');
});

Ответ 6

Для Slim v3.x:

Используйте $response->withStatus(302)->withHeader('Location', $url); вместо $app->redirect();

В Slim v2.x можно использовать вспомогательную функцию $app- > redirect(); для запуска запроса перенаправления. В Slim v3.x можно сделать то же самое с использованием класса Response (см. Следующий пример) [1].

Используйте pathFor() вместо urlFor():

URL-адрес() был переименован в pathFor() и может быть найден в объекте маршрутизатора. Кроме того, pathFor() - это базовый путь [2].

Пример:

$app->get('/', function ( $request, $response, $args ) use ( $app ) {
  $url = $this->router->pathFor('loginRoute');
  return $response->withStatus(302)->withHeader('Location', $url);
});

Примечание. дополнительные параметры могут быть предоставлены путем передачи ассоциативного массива имен параметров и значений в качестве второго аргумента pathFor(), например: $this->router->pathFor('viewPost', ['id' => 1]);.

Метод pathpath() маршрутизаторов принимает два аргумента:

  • Название маршрута
  • Ассоциативный массив заполнителей шаблонов маршрутов и значений замены [3]

Литература:

Ответ 7

Я думаю, что столкнулся с подобной проблемой, и проблема была в моем конфигурационном файле .htaccess. На самом деле это должно быть примерно так:

RewriteEngine On
RewriteBase /api #if your web service is inside a subfolder of your app, 
# you need to pre-append the relative path to that folder, hope this helps you!

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

Ответ 8

Я думаю, что использование./вместо/будет работать.