Как организовать просмотр страны/штата/города в URL-адресе codeigniter

Я создаю веб-сайт, который включает интерфейс просмотра страны/штата/города. В целях SEO я хочу включить в URL-адрес название страны/штата/города. Например, URL-адрес может включать дополнительные переменные и выглядеть примерно так:

http://www.domain.com/USA/NewYork?Category=car&color=black&Model=2009&page=5

http://www.domain.com/Spain/Allcity?Category=car&color=black&Model=2009&page=20

Мне нужно вписать эту функциональность в CodeIgniter. Я не уверен, как организовать основные компоненты, особенно контроллер и, возможно, класс библиотеки.

Существует ли стандартный или передовой подход?


person Turki Gumanel    schedule 13.06.2014    source источник
comment
Ознакомьтесь с руководством пользователя: ellislab.com/codeigniter/user-guide/general/routing .html   -  person Bora    schedule 13.06.2014
comment
Вы также можете добиться этого, установив эти поля в качестве ключей URL при создании веб-сайта CodeIgniter с помощью генератора кода PHP на thephpcode.com.   -  person Ninthu    schedule 13.06.2014


Ответы (1)


Отредактируйте файл routes.php, расположенный в папке конфигурации.

Как указано в ссылке от Bora (Маршрутизация CI URI), некоторые примеры из документация:

$route['journals'] = "blogs";
//A URL containing the word "journals" in the first segment will be remapped to the "blogs" class.

$route['blog/joe'] = "blogs/users/34";
//A URL containing the segments blog/joe will be remapped to the "blogs" class and the "users" method. The ID will be set to "34".

В вашем случае вам необходимо согласовать имена функций в ваших контроллерах и желаемые имена URL. Вы можете получить примеры, которые вы показываете в своем вопросе, но вам нужно будет проложить маршрут для каждой страны, которую вы хотите, в первом сегменте URI после domain.com. Наверное, проще сделать так:

http://www.domain.com/locations/USA/Нью-Йорк?Category=car&color=black&Model=2009&page=5

А затем в папке маршрутов:

$route['locations/(.*)/(.*)'] = 'locations';

Если вам нужно передать дополнительные параметры вашему контроллеру через URL-адрес, вы можете использовать строки запроса, как показано выше, или добавить

$route['locations/(.*)/(.*)/([0-9]{1,5})'] = 'locations/$1';
//assumes that parameter is numeric, 0-9 up to 5 digits
person Dan    schedule 13.06.2014