Хотите включить example.com/country/name/Korea в example.com/korea - PullRequest
2 голосов
/ 26 июня 2011

Я думаю, что название объясняет все это. Дело в том, что мое приложение основано на 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. com / стран по-прежнему следует интерпретировать как вызов контроллера стран.

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

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

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

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

0 голосов
/ 27 июня 2011

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

...