【发布时间】:2012-11-30 11:37:03
【问题描述】:
我正在重新定义我自己的 php mvc 框架。
默认情况下,我的每个请求都由 /index.php 处理,这会触发路由的 mvc 过程,执行请求并返回正确的视图。每个请求都根据单个 'q' GET 参数进行路由,drupal 风格,如
/index.php?q=anApplication/aController/theAction/arg1/.../moreArguments
这很好用,并且通过 mod_rewrite 使干净的 url 变得容易。好的。
我有一个这样的目录树:
/public
|----themeName
|--------|
|----page.tpl
|----content.tpl
|----etc.
/private
|----sourceDirectory
|----moreSources
我不想要是存储在私有和公共目录中的文件,可以像 HTTP 请求一样直接提供服务:我不想要像
这样的东西mySrv/public/themeName/page.tpl
绕过我的核心处理程序 - index.php,显示无效模板或任何不是图像的资源。
我想我可以通过这样的重写配置来实现一些目标
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ index.php?q=$1 [QSA,L]
但该框架只能在启用 mod_rewrite 的网站上运行,因为这将重写所有现有和不存在的资源。
我要问的是:是否有另一种方法可以让每个请求都由我选择的资源(例如 index.php)提供服务,现有或不存在的资源?
谢谢
【问题讨论】:
-
为什么公用文件夹中有模板?
-
因为我通常与css、js等通用资源共享模板文件夹
-
这不是个好主意,恕我直言。
标签: php apache model-view-controller mod-rewrite lamp