我最近一直在提高我的网络编程技能,以遵循更健全,更易于维护的MVC编程风格.但是,我以前用“自己动手”框架做的一件事是基于mod_rewrite的灵活动态路由.这似乎是像cakephp,zend等问题的一个痛处问题.它通过尝试复制我所具有的功能而引起一些麻烦.
在您自己的上下文中,您可以执行以下操作:
<custom htaccess rules before>
RewriteRule ^([A-Za-z0-9-/]+)$ index.php?q=$1 [NC,L]
它将所有匹配的url重写为处理url的任意脚本,将“/ abc-123 / abc-456 / controller-value”等的组合解析为任何可以设置的页面或动作,函数等列表数据库表,硬编码,bla bla ..之前的自定义规则可以传递服务器上资源存在的文件的匹配请求,或设置管理路由等.
但是,一旦MVC url策略启动,使用隐藏来自外部世界的应用程序逻辑的东西来覆盖此行为是极其困难的.我从来没有真正理解为什么有人想要向用户公开函数名称,这是我真正的bugbear.从可用性和安全性的角度来看,这似乎是不必要的,也是一种过于强加的过程.
那么 – 问题是这样,如何在为应用程序保持稳固的MVC基础的同时,采用重写,可翻译和友好的URL策略?
预修课程:
>没有暴露应用程序逻辑
>可翻译的URL(i18n)
>动态,能够在不触及应用程序代码的情况下添加,删除,编辑网址或页面
娱乐时间! :d
示例网址:
/en/news/story-title
/pt/noticias/titulo
url根据传递的语言字符串检索本地化内容.
最佳答案 MVC只是一种与URL结构无关的架构模式.使用自定义路由层不会以任何方式破坏MVC.如果您可以使用集中路由,那么,例如,您可以使用配置文件将URL模式(正则表达式或某种简化语法)映射到控制器操作.