Intereting Posts
SELECT * из таблицы SQL с помощью подготовленного оператора Загрузите фотографии из фактического API Не могу добавить коробку laravel / homestead. Msgstr "Сертификат SSL …". Windows php взорвать и заставить массивные ключи начинаться с 1, а не 0 PHP-скрипт продолжается после закрытия / остановки страницы Опция «ПРОСМОТР ПОЛНОГО САЙТА» Проверенна ли дата, время отпуска на 7 часов? Установите PDO для исключения исключений по умолчанию Устранение неполадок «Неожиданный T_ECHO» в операторной инструкции оператора Измените версию PHP на сервере, используя либо .htaccess, либо php.ini Выполните шифрование с помощью PHP (openssl_encrypt), затем расшифруйте с помощью JS (CryptoJS) Как работают push-уведомления? Как проверить поле формы в PHP с помощью объектно-ориентированной техники Каковы «стандартные» сокращения часового пояса? Где хранятся глобальные переменные, такие как $ _GLOBAL, $ _POST и т. Д.?

Маршрутизация Zend Framework: расширение .html

Я знаю, что видел это раньше, но я не могу найти информацию нигде. Мне нужно иметь возможность маршрутизировать с расширением .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