【问题标题】:Zend Framework htaccess Backend / FrontendZend 框架 htaccess 后端/前端
【发布时间】:2011-10-26 18:22:59
【问题描述】:

在我当前的 ZF 项目中,我有两个公共访问点(文件)准备好处理和处理即将到来的请求,即:index.php 和 admin.php

我需要将所有包含“/admin”的 URL 路由到 admin.php,而其他不包含“/admin”的 URL 需要路由到 index.php

知道默认的 ZF htaccess 包含以下规则:

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

如何实现?

【问题讨论】:

  • 我不明白你为什么要这么做。您可以简单地拥有一个入口点,然后根据 url 添加一个重定向到正确控制器(或您想要的 wharever)的新路由。
  • 这是一个大项目,每个后端和前端都包含太多模块,'admin'不能既不是单个模块,也不能是每个模块内部的分散控制器。后端和前端都应该完全分开,这样每一端都可以受益于完整的模块化功能。这就是为什么我看到需要两个接入点。如果您了解我的情况并知道更好的解决方案,请随时提出建议。
  • 好吧,如果我能很好地理解您的需求,这仍然可以使用路由和单个入口点来完成。事实上,您总是根据 url 重定向用户,所以我认为使用路由或两个入口点没有区别。

标签: zend-framework .htaccess frontend backend


【解决方案1】:

首先我想说我完全同意 AurelioDeRosa。我相信路线会是更好的选择。但是,这是您的选择,不是我的选择,这个 .htaccess 代码应该可以满足您的要求。

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

但请注意,此脚本将捕获任何包含 admin 的内容,因此它可能会破坏您的前端。例如,如果您想列出所有具有管理权限的用户,则 url yoursite.com/users/listby/admin/ 会将请求重定向到 admin.php,/administrator/ 之类的 url 也会如此或 /adminininini

【讨论】:

  • 抱歉,这些规则不起作用!它仍在将所有请求路由到 index.php
  • 奇怪。出于某种原因,代码不适用于斜杠。我不是重写 RegExp 方面的专家,我无法解释原因,但我已经更正并测试了代码并更新了上面的答案。
猜你喜欢
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
  • 2013-10-17
相关资源
最近更新 更多