Как лучше всего перенаправить 301 страницу в CakePHP? - PullRequest
5 голосов
/ 21 августа 2011

Я переписал свой сайт в Cakephp и решил сохранить новую структуру Cakephp. Мне было интересно, смогу ли я использовать маршрутизацию в Cakephp для 301-маршрутизации (постоянно перемещена).

Я хочу перенаправить resources.php, languages.php, clips.php, возможно * .php, в / resources /, / languages ​​/, /clips.

Может ли этот тип перенаправления 301 быть легко выполнен в CakePHP? Я мог бы даже написать простой интерфейс администратора, чтобы добавить 301-ссылку, например, из таблицы MySQL, чтобы легко администрировать перенаправления. Или лучше сделать это вручную через mod_rewrite?

Ответы [ 2 ]

9 голосов
/ 21 августа 2011

Я не уверен насчет лучшего способа, но я бы сначала поставил маршрутизацию на маршрутах php вроде:

Router::connect('/resources.php', array(
    'controller' => 'resources', 
    'action' => 'index'
    )
);

(и так далее)

После этого проверьте при запуске функции действия, какой маршрут использовался, и если использовался маршрут * .php, выполните перенаправление 301:

$this->redirect(array('controller' => 'resources', 'action' => 'index'), 301);

Полагаю, есть и более "умный" способ реализовать это, но это была идея. (использование before_filter и т. д.)

2 голосов
/ 12 марта 2013

Начиная с CakePhp 2.x существует метод Router::redirect().

Таким образом, вы можете добавить перенаправление в свои маршруты:

Router::redirect(
    '/resources.php', 
    array(
        'controller' => 'resources', 
        'action' => 'index'
    ), 
    array('status' => 301)
);

Третий параметр array('status'=>301) не нужен, потому что 301-reirect используется по умолчанию.

См. Маршрутизация перенаправления - CakePHP Cookbook v2.x документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...