Все,CakePHP: Проблемы с маршрутизации
В настоящее время я использую CakePHP, чтобы полностью обновить текущий текущий сайт НОВОСТИ. Я переношу все текущие статьи на новый сайт, и они будут использовать тот же article_id
, что и текущий сайт. Однако я осознал следующую проблему.
Мой текущий сайт использует следующие настройки в качестве URL:
http://www.mydomain.com/?c=140&a=4388
c=
ссылается на идентификатор категории и a=
ссылки статья ID. Моя новая настройка (CakePHP) я воспользоваться слизнями и теперь моих статей URL-адрес отображается как:
http://www.mydomain.com/noticia/this-is-an-article-slug
Так, я заметил, через WebStats, что многие из моих статей доступны через установку ссылки на других сайтах, как Facebook , Я подумал, что было бы крайне важно создать систему/маршрут, который позаботится об этом для меня.
Это то, что я имею в виду:
- Создание маршрута, который определяет запросы, похожие на то, что упомянуто выше
- Сделать маршрут передать значение
a
в качестве параметра функции перенаправления в мой контроллер статей, такие какarticleRedirect($article_id)
Эта функция будет выглядеть в базе данных для
slug
на основе переданного$article_id
и перенаправить на новый адрес (см функцию ниже)// Function in articles controller to redirect old site's article url to // new websites url format function articleRedirect($article_id = NULL){ $this->Article->recursive = -1; $slug = $this->Article->findById($article_id); if($slug == NULL){ $this->Session->setFlash('Article not found'); $this->redirect('/noticias'); }else{ $this->redirect('/noticia/'.$slug['Article']['slug']); } }
Я думаю, что это должно сработать. Однако мне нужна серьезная помощь в маршрутизации. Может кто-нибудь предложить маршрут, который я могу использовать.
спасибо.
Я пробовал, но он не работает. Что-то может быть неправильно с правилом перезаписи. Я буду продолжать пробовать разные вещи. В принципе, ничего не происходит, если я вхожу на www.mydomain.com/?c=135&a=1341. Он просто обращается к моей главной странице. –
@CaboONE Да, переписывание должно быть просто включено/с RewriteCond в переменной% {QUERY_STRING}. Что-то вроде 'RewriteCond% {QUERY_STRING}^c = [0-9] + & a = ([0-9] +)' с 'RewriteRule ^// noticia /% 1 /' может это сделать. – Oldskool
Я все еще не мог этого сделать. Я опубликовал решение, которое я решил использовать ... –