Хочешь повернуться example.com/country/name/Korea чтобы example.com/korea


Я думаю, что название объясняет все это. Дело в том, что мое приложение основано на Zend Framework и включает в себя ряд контроллеров. Основными контроллерами являются:

Companies/
People/
Countries/

Изначально страна профилей url может ве доступны через URL, например:

example.com/countries/view/id/Korea

Я замкнул его, добавив маршрутизатор к

example.com/countries/Korea

Однако клиент требует дальнейшего сокращения до:

example.com/Korea

Приведение названия страны, являющейся в данном случае параметром url, на место контроллера. Кроме того, клиенты требуют, чтобы все URL-адреса были сокращены аналогичным образом, так что url-адрес для компании, которая раньше читала что-то вроде:

example.com/companies/acme-corporation-1234

Где 1234-идентификатор компании, чтобы прочитать что-то в строках:

example.com/acme-corporation-company
Я могу понять уникальность названий стран, поскольку нет двух стран с похожими названиями, однако я сомневаюсь, что смогу сделать то же самое для компаний, поскольку у вас может быть несколько компаний с похожими названиями. Я все проверил. Gogobot.com и заметил что все URL-адреса на сайте действительно легко читаются и даже не содержат ни одного идентификационного номера.

Есть ли какая-либо идея о том, как это можно сделать, т. е. еще больше сократить - так, чтобы example.com/korea это не означает Корею как контроллер, но как ссылку на example.com/countries/korea а также url-адрес example.com/countries по-прежнему следует трактовать это как обращение к контролеру стран.

2 2

2 ответа:

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

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

Mod_ReWrite / ReWriteMap URL-адрес с использованием сценария поиска базы данных

Если вы достаточно хорошо знакомы с ZF, вы можете использовать пользовательский класс маршрута для этого, смотрите следующее объяснение: http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework (там немного другая проблема, но решение то же самое). Для вашего случая вам понадобится один для компаний и один для стран.