Cakephp, Направьте старые результаты поиска Google на новую домашнюю страницу - PullRequest
1 голос
/ 21 апреля 2010

Я создал новый веб-сайт для компании и хотел бы, чтобы все предыдущие результаты поиска были перенаправлены. Поскольку страниц было довольно много, и большинство из них использовали идентификатор, я бы хотел использовать что-то общее вместо перенаправления всех старых страниц.

Моей первой мыслью было сделать это:

Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'home'));

И поместите это в самый конец файла rout.php [так как он имеет приоритет] , чтобы все запросы, не прошедшие проверку с предыдущими действиями маршрута, возвращали true с этим и перенаправляли на домашнюю страницу.

Однако это не работает.

Когда я использую другой путь на маршрутизаторе, он успешно перенаправляется. Например, если я дам это:

Router::connect('/*', array('controller' => 'projects', 'action' => 'browser'));

работает нормально. Проблема возникает, когда в качестве контроллера используются страницы, отображение действий и т. Д.

Я вставляю свой файл route.php [так как он маленький] в надежде, что кто-нибудь подскажет мне:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

    Router::connect('/company/*', array('controller' => 'articles', 'action' => 'view'));

    Router::connect('/contact/*', array('controller' => 'contacts', 'action' => 'view'));

    Router::connect('/lang/*', array('controller' => 'p28n', 'action' => 'change'));

    Router::connect('/eng/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'eng'));

    Router::connect('/gre/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'gre'));


    Router::parseExtensions('xml');

Ответы [ 2 ]

3 голосов
/ 22 апреля 2010

Вместо того, чтобы пытаться обрабатывать все в файле маршрута cakePHP, я бы порекомендовал использовать файл .htaccess для перенаправления 301 страниц при необходимости.

То, что у вас есть выше, не перенесет ранжирование, потому что, насколько я вижу, перенаправление 301 не выводится ни в одном из предложенных вами решений на основе route.php.

2 голосов
/ 23 апреля 2010

Большая проблема в том, что Маршрут не перенаправляет , он связывает URL с ответами. Другими словами, он гарантирует, что ваши теперь недействительные URL-адреса все еще дают действительную страницу. Что прямо противоположно тому, чего вы хотите достичь.

Вы хотите сказать посетителям, что URL, который раньше был действительным, больше не является. Вы делаете это путем выдачи соответствующих кодов ответа HTTP, 301 Moved Permanently в этом случае. Без этого URL-адреса будут по-прежнему действительны для поисковых систем и не будут обновлять свой индекс.

Вы должны были бы либо подключить все недействительные URL-адреса через маршруты к какому-либо действию контроллера, которое выдаст $this->redirect('...', 301), либо использовать некоторые правила .htaccess для перенаправления. Какой из них использовать, зависит от сложности перенаправления, но вы, вероятно, сможете использовать простые правила .htaccess mod_rewrite.

На SO достаточно примеров: https://stackoverflow.com/search?q=htaccess+301+redirect

...