Codeigniter с использованием маршрутов и 301 перенаправления - PullRequest
1 голос
/ 14 февраля 2012

Я нахожусь в процессе развертывания нового сайта, для которого требуется настройка перенаправления 301 для существующих ссылок, проиндексированных Google.

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

например. маршрут

$route['hotel/pages/([a-z0-9_-]+)//\.htm$/'] = 'hotel/page/redirect/$1/$2';

Так что я хотел бы, чтобы все страницы имели следующую структуру:

site.com / гостиница / страницы / somesection / page.html

чтобы использовать другой контроллер, где я настрою перенаправление 301 (я могу сделать это немного)

Кто-нибудь может дать мне несколько советов?

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

В apache, если сопоставление достаточно простое для описания с помощью регулярного выражения, вы можете просто использовать mod_rewrite и пропустить контроллер перенаправления.

Например:

RewriteEngine On
RewriteRule ^hotel/pages/(.*)/(.*\.html?)$ http://site.com/hotel/$1/$2 [R=301,L]

Даст вам 301 от

site.com/hotel/pages/somesection/page.html

до

site.com/hotel/somesection/page.html
1 голос
/ 14 февраля 2012

Это должно сделать (построил быстрый локальный тест, и он сработал):

$route['hotel/pages/(:any)/(\w+.html$)']  = 'hotel/page/redirect/$1/$2';

:any (вещь CI) очень похожа на /\w+/i, поэтому она соответствует чему-либо в 3-м сегменте, ипереназначается на $1;затем у вас есть косая черта, а затем любой символ, повторенный еще раз и заканчивающийся на «.html», который преобразуется в $2

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