【问题标题】:Apache - "dynamic" rewrite ruleApache - “动态”重写规则
【发布时间】:2010-06-09 08:42:09
【问题描述】:

我正在处理一个 Zend Framework 项目,在该项目中我偶然发现了一些问题。 问题源于模块是 Zend 框架中的二等公民这一事实。在我的项目中,我希望每个模块都有一个文件夹,其中包含要从外部访问的文件 - 样式表、javascript 和图像等文件。

现在,如何做到这一点。在 Zend Framework 项目中,我的文件夹结构如下所示:

  • 应用/
    • 模块/
      • 模块一/
        • 公开/
          • stylesheet.css
      • 模块二/
      • 模块三/
  • 公开/
    • index.php

位于 public/ 文件夹中的标准 .htaccess 文件包含以下内容:

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 是 public/ 文件夹。所有请求都通过 Zend Framework 的路由器组件接管的 index.php 文件重定向。现在,我绝不是 Apache 和 mod_rewrite 的专家,如果这只是愚蠢的,请原谅我。我想我在现有的重写规则中实现了一个额外的步骤,这样如果我请求 http://project/public/moduleOne/stylesheet.css 它将例如解析为 /var/www/project/application/modules/moduleOne/ public/stylesheet.css.

所以需要做的步骤是检查 URI 中的第一个元素是否是 public/ 如果是,我们将下一段作为模块名称并在路径中使用我们正在尝试解析并尝试提供该文件。

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

感谢您的宝贵时间 克里斯蒂安·拉斯穆森

【问题讨论】:

    标签: apache zend-framework mod-rewrite routing


    【解决方案1】:

    仅使用 mod_rewrite 您不能请求文档根目录之外的文件。所以唯一的解决方案是使用位于文档根目录并指向模块目录的符号链接。

    【讨论】:

    • 嗨奥洛洛,很抱歉忘记了这个问题。关于访问文档根目录之外的资源,您确实是正确的。衷心感谢您的回答。
    猜你喜欢
    • 2011-09-02
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多