2010-06-09 98 views
1

我正在研究一个Zend Framework项目,在那里我偶然发现了一些问题。 这个问题来自模块是Zend框架中第二类公民的事实。在我的项目中,我希望每个模块都有一个文件夹,其中包含要从外部访问的文件 - 样式表,JavaScript和图像等文件。Apache - “动态”重写规则

现在,这是如何完成的。随着Zend框架的项目,我有一个文件夹结构,看起来像这样:

  • 应用/
    • 模块/
      • ModuleOne的/
        • 公共/
          • 样式表.css
      • ModuleTWO中/
      • 模块ModuleTHREE/
  • 公共/
    • 的index.php

标准的.h地处公共/文件夹taccess文件保存了这一点:

SetEnv APPLICATION_ENV development 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

它的工作方式是,该项目的apache的DocumentRoot的是公共/文件夹。所有请求都通过index.php文件重定向到了Zend Framework路由器组件接管的位置。现在,我绝不是Apache的专家,也不是mod_rewrite,所以如果这只是愚蠢的话,请原谅我。我想我在现有的重写规则中实现了一个额外的步骤,以便如果我请求http://project/public/moduleOne/stylesheet.css它将例如解析为/var/www/project/application/modules/moduleOne/public/stylesheet.css

因此,这需要做的步骤是检查URI中的第一个元素是公共/如果是这样,我们采取下段模块的名称,并使用该路径,我们正在努力解决并尝试提供该文件。

这是所有可能的还是没有人有更好的建议?

谢谢您的时间 基督教拉斯穆森

回答

0

只需mod_rewrite的,你不能要求文档根目录以外的文件。所以唯一的解决方案是使用位于文档根目录下的指向模块目录的符号链接。

+0

嗨,奥洛,遗憾忘记这个问题。 关于访问文档根目录之外的资源,你的确是对的。我真诚地感谢你的回答。 – 2011-03-07 09:35:35