Возможно ли, что FuelPHP не пропустит правую сторону маршрута?

В config/routes.php

<?php
return array(
    'account/profile/change_password'  => 'users/account/change_password',
);

Я могу получить доступ site.com/users/account/change_password а также site.com/users/account/change_password в браузере.

Есть ли способ ограничить его только левой стороной (т.е. site.com/users/account/change_password)?

2 ответа

Решение

Только направляя его конкретно, например, направляя в то же место, что и ваш _404_ контроллер. Конечно, вы также можете сделать это для всего контроллера:

'users/account(/:any)' => 'my/404/route',

Таким образом, прямой вызов на этом контроллере всегда будет идти к вашему 404.

Конечно, если ваши маршруты заканчиваются подстановочными маршрутами, такими как ':any' => 'catch/everything/$1' тебе не нужно этого делать.

Для полноты: если вы хотите разрешить только вызовы HMVC, но не иметь доступа к URI, вы также можете перехватить его в самом контроллере. Либо в методе before() (для всего контроллера), либо в отдельных методах:

// throw a 404 if accessed via the URI
if ( ! \Request::active()->is_hmvc())
{
    throw new \HttpNotFoundException();
}
Другие вопросы по тегам