我最近一直在提高我的网络编程技能,以遵循更健全、更易于维护的 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 策略生效,就很难用对外界隐藏应用程序逻辑的东西来覆盖此行为。我从来没有真正理解为什么有人想要向用户公开函数名称,这是我真正的烦恼。从可用性和安全性的角度来看,这似乎是不必要的,而且强加于人。
那么 - 问题是,如何在为应用程序维护坚实的 MVC 基础的同时实现重写、可翻译和友好的 url 策略?
先决条件:
- 没有暴露应用程序逻辑
- 可翻译的 URL (i18n)
- 动态且能够添加、删除、编辑 URL 或页面,而无需触及应用程序代码
欢乐时光! :D
示例网址:
/en/news/story-title
/pt/noticias/titulo
其中 url 根据传递的语言字符串检索本地化内容。
最佳答案
MVC 只是一种架构模式,与 URL 结构无关。使用自定义路由层不会以任何方式破坏 MVC。如果集中式路由适合您,那么,例如,您可以拥有一个配置文件,将 URL 模式(正则表达式或某种简化的语法)映射到 Controller 操作。
关于php - 基于 MVC 基础的动态路由 - i18n 和 l10n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991631/