2011-04-18 4 views
0

Я разрабатываю сайт мобильного телефона с помощью CodeIgniter. Я чувствую себя комфортно с регулярным выражением и mod_rewrite. Мой вопрос в том, как создать seo дружественный url, как этот, в codeigniter.codeigniter и seo

http://mysite.com/phones/samsung/model_name/

я могу сделать, используя идентификатор категории, подкатегорий и т.д., как это.

http://mysite.com/phones_c23/samsung_s34/model_name_m32/

Но i`m ищет более чистый раствор (как в примере выше).

Маршруты непригодны для меня в этой ситуации, так как администратор этого веб-сайта может создать неограниченное основные категории (например mysite.com/phones/ mysite.com/tablet/)

ответ

1

Используйте функцию переназначить из CodeIgniter. Второй сегмент URI обычно определяет, какая функция в контроллере вызвана. CodeIgniter позволяет вам переопределить это поведение с помощью _remap().

Что вы можете сделать это:

В регуляторе сделать функцию _remap() {} Теперь в функции использовать и граней сегмента URL, чтобы получить фрагменты вашего URL.

Если запрос таков: http://mysite.com/phones/samsung/model_name/

Ваш переназначить должен найти сегменты «Samsung», «телефоны» и «MODEL_NAME» .. выполнить запрос, чтобы получить подробную информацию (coresponding идентификаторы и т.д.), а затем вуаля вас имеют динамическую рабочую систему.

Для получения дополнительной информации проверить это: http://codeigniter.com/user_guide/general/controllers.html#remapping

0

Я не отбрасывать так быстро маршрутизации. Метод контроллера не обязательно должен быть вторым параметром в URL-адресе. Если вы возьмете свой пример того, что у вас есть URL-адрес, который выглядит как http://mysite.com/phones/samsung/ABCD/, то внутри файла routes.php вы можете сделать

$ route ['phones/(: any)/(: any)'] = "телефоны/л/$ 1/$ 2" ;

Внутри вашего контроллера «Телефоны» у вас будет функция «бла» (возможно, хорошо ее переименовать), и первым будет параметр производителя телефона, а модель телефона будет вторым параметром. Это будет работать со всеми производителями и всеми моделями. Вы не должны иметь другой контроллер или метод в зависимости от разных комбинаций.

Если это не всегда телефоны (например, это может быть планшет), и у вас может быть URL-адрес, например http://mysite.com/tablet/samsung/ABCD/, тогда ваш файл route.php должен быть чем-то вроде $ route ['(: any)/(: any)/(: any) '] = "something/blah/$ 1/$ 2/$ 3"; Тогда контроллер «Something» будет иметь функцию «blah», которая будет передаваться электронным типом (телефон, планшет и т. Д.), Производителем и моделью.

Чтобы сделать его еще более простым, как сказал @Stewie, вы можете использовать _remap(). В Руководстве пользователя есть хорошая документация и примеры использования http://codeigniter.com/user_guide/general/controllers.html#remapping