Я хочу получить список городов, где каждое название города связано и ссылается на страницу этого города:
Ссылки (созданные в скрипте просмотра) выглядят так:
http://project.loc/catalog/Berlin (in the HTML source code url-encoded: Berlin)
http://project.loc/catalog/Erlangen (in the HTML source code url-encoded: Erlangen)
http://project.loc/catalog/Nürnberg (in the HTML source code url-encoded: N%C3%BCrnberg)
«Берлин», «Эрланген» и т. д. работают, но если название города содержит немецкий специальный символ (ä
, ö
, ü
, Ä
, Ö
, Ü
или ß
), например «Нюрнберг», возникает ошибка 404:
Произошла ошибка 404 Страница не найдена. Запрошенный URL-адрес не может быть сопоставлен маршрутизацией. Нет доступных исключений
Почему? И как заставить это работать?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Мои настройки роутера:
'router' => array(
'routes' => array(
'catalog' => array(
'type' => 'literal',
'options' => array(
'route' => '/catalog',
'defaults' => array(
'controller' => 'Catalog\Controller\Catalog',
'action' => 'list-cities',
),
),
'may_terminate' => true,
'child_routes' => array(
'city' => array(
'type' => 'segment',
'options' => array(
'route' => '/:city',
'constraints' => array(
'city' => '[a-zA-ZäöüÄÖÜß0-9_-]*',
),
'defaults' => array(
'controller' => 'Catalog\Controller\Catalog',
'action' => 'list-sports',
),
),
'may_terminate' => true,
'child_routes' => array(
// ...
),
),
),
),
),
),
constraints
, который вы определили? - person CBroe   schedule 26.03.2013$city->name
, а неurlencode($city->name)
). - person automatix   schedule 26.03.2013urlencode($city->name)
, я бы получил такие URI, как/catalog/N%25C3%25BCrnberg
вместо/catalog/Nürnberg
. - person automatix   schedule 26.03.2013%25C3%25BC
будет дважды закодирован в URL-адресеü
—%C3%BC
будет правильным дляü
в UTF-8. И современные браузеры по-прежнему отображают это какü
в строке состояния/адресной строке. Если вы неправильно кодируете специальные символы в URL, у вас могут возникнуть проблемы с браузером, использующим кодировку символов, отличную от UTF-8, и кодировать ее как, например, UTF-8. ISO-8859-1ü
, который будет просто%FC
… и тогда вы действительно столкнетесь с проблемами при маршрутизации. - person CBroe   schedule 26.03.2013/catalog/N%C3%BCrnberg
), ZF делает это по умолчанию. Я этого не знал и предоставил вам неверную информацию, извините. Кроме того, URI кодируется в URL-адресе. - person automatix   schedule 26.03.2013