CakePHP изменить URL на новый URL

У меня есть программа CakePHP (версия 2.1.3), которая уже запущена (на Centos 6.x и Apache).

Теперь я хочу изменить URL-адрес с: http://domain.com/frontend/login

на новый URL вроде: http://domain.com/user-login.html

Я изменил route.php, как показано ниже:

Router::connect(
'/:slug.html',
array('controller' => 'frontend', 'action' => 'login'),
array(
'pass' => array('slug')
)
);

и добавил следующий код в мой login.ctp:

<?php
echo $html->link('user login',
array(
'controller' => 'frontend',
'action' => 'login',
'slug' => Inflector::slug('user login')));
?>

Это успешно, и теперь я могу получить доступ с новым URL: http://domain.com/user-login.html

Но я также все еще могу получить доступ со старым URL: http://domain.com/frontend/login

Я только хочу получить доступ к новому URL и удалить старый URL.

Как я могу сделать? пожалуйста, направьте мне детали.

Поблагодарить.

4

Решение

Ответ Ptica хороший, но если вы хотите что-то, что не отключает все маршруты по умолчанию CakePHP, я бы добавил правила перенаправления в файл .htaccess: —

Redirect 301 /frontend/login /user-login.html

.htaccess — лучшее место для размещения ваших перенаправлений, чем в файле маршрутов, поскольку он будет более эффективным. Вероятно, было бы неплохо добавить комментарий об этом в файл маршрутов для дальнейшего использования; в противном случае вы или кто-то еще однажды посмотрите на проект и будете сбиты с толку тем, что перенаправляет!

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

  • всегда используйте Cake Router / HtmlHelper для генерации ссылок, чтобы использовать правильный псевдоним
  • включить канонический URL на странице, чтобы поисковые системы использовали правильный URL

Таким образом, приложение никогда не должно ссылаться /frontend/login,

2

Другие решения

в нижней части вашего routes.php В файле есть это утверждение:

/**
* Load the CakePHP default routes. Remove this if you do not want to use
* the built-in default routes.
*/
require CAKE . 'Config' . DS . 'routes.php';

просто закомментируйте require линия, и вы должны быть все готово

1

По вопросам рекламы [email protected]