我正在使用Zend Framework来创建API
我想用apache mod_rewrite来改变一些URI, 但我仍然处于n00b级别的apache rewite的
目前我正在使用默认的ZF .htaccess文件删除index.php文件,并且非常符合URI:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
目前URI看起来像这样:
http://domain.com/module/index/action/id/5/format/json
我想做什么:
这样当我得到以下URI时:
http://domain.com/module/action/5.json
它仍然会指向:
http://domain.com/module/index/action/id/5/format/json
是否有可能在一个声明中完成所有这些? 或者在ZF Bootstrap中添加自定义路由会更好吗?
答案 0 :(得分:0)
通常在Zend Framework应用程序中,在mod_rewrite
级别使用Apache的.htaccess
进行的唯一URL重写是您在问题中的重写。这会通过框架推送所有请求,然后框架具有处理请求的内部机制。
将url映射到(模块,控制器,操作)三元组和设置请求参数的内部过程称为“路由”。 Zend Framework允许您定义自定义路由。
通常,路由是在引导阶段定义的;毕竟,它必须在流程的早期完成,以便系统可以确定需要实例化哪个控制器来处理请求。
ZF documentation for routing很好地描述了它。
总结:最好通过应用程序中定义的自定义路线来完成此任务。