Я знаю, что видел это раньше, но я не могу найти информацию нигде. Мне нужно иметь возможность маршрутизировать с расширением .html в Zend Framework.
IE /controller/action.html должен перейти к соответствующему контроллеру / действию.
У нас есть идея выбросить расширение .html с нашим .htaccess файлом, но я думаю, что изменение конфигурации маршрута было бы лучшим решением.
Любые советы приветствуются.
Быстрый поиск в google дал следующие уроки:
Расширение маршрута и маршрутизатора Zend Framework для пользовательской маршрутизации
Маршрутизация и сложные URL-адреса в Zend Framework
Это плагин, который я использовал в нескольких приложениях:
/** * Removes .html extension from URI, if present. */ class Application_Plugin_RemoveHtmlExtension extends Zend_Controller_Plugin_Abstract { public function routeStartup(Zend_Controller_Request_Abstract $request) { // remove ".html" from the end of the URI $url = preg_replace('#\.html$#i', '', $request->getRequestUri()); $request->setRequestUri($url); } }
Я пытался сделать то же самое для старого приложения. Вот что сработало для меня.
$front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $router->addRoute('routeHTML', new Zend_Controller_Router_Route_Regex( '([az-]+)/([az-]+)/([az-]+)\.html', array(), array(1 => 'module', 2 => 'controller', '3' => 'action') , '%s/%s/%s.html') );
Маршрут по умолчанию (без модулей):
:controller/:action
Который вы можете удалить:
$router->removeDefaultRoutes();
Затем добавьте свою версию:
:controller/:action.html