Zend 框架路由:.html 扩展名
-
19-08-2019 - |
题
我知道我以前见过这样做,但我在任何地方都找不到信息。我需要能够在 Zend Framework 中使用 .html 扩展名进行路由。
IE。/controller/action.html 应路由到适当的控制器/操作。
我们有一个想法,用 .htaccess 文件丢弃 .html 扩展名,但我认为更改路由配置将是更好的解决方案。
欢迎任何建议。
解决方案
在谷歌上快速搜索后得到了以下教程:
扩展 Zend Framework Route 和 Router 以实现自定义路由
Zend Framework 中的路由和复杂 URL
其他提示
这是我在几个应用中使用的插件:
/**
* 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( '([a-z-]+)/([a-z-]+)/([a-z-]+)\.html', array(),
array(1 => 'module', 2 => 'controller', '3' => 'action') ,
'%s/%s/%s.html')
);
默认路由(无模块)是:
:controller/:action
哪些可以删除由:
$router->removeDefaultRoutes();
添加您的版本:
:controller/:action.html
不隶属于 StackOverflow