Хочешь повернуться 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 ответа:
Пожалуйста, взгляните на аналогичную проблему одного из плакатов. Вы можете использовать Apache
RewriteMap
для сопоставления URL с внешним скриптом и обработки запроса на основе кода.Таким образом, вам не нужно беспокоиться о наличии контроллера для каждой страны, но передать его в скрипт, чтобы найти идентификатор или что-нибудь, что вы хотите, чтобы они обрабатывали.
Mod_ReWrite / ReWriteMap URL-адрес с использованием сценария поиска базы данных
Если вы достаточно хорошо знакомы с ZF, вы можете использовать пользовательский класс маршрута для этого, смотрите следующее объяснение: http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework (там немного другая проблема, но решение то же самое). Для вашего случая вам понадобится один для компаний и один для стран.