【问题标题】:CodeIgniter URI Routing (htaccess) with multiple Applications具有多个应用程序的 CodeIgniter URI 路由 (htaccess)
【发布时间】:2011-09-07 22:37:21
【问题描述】:

你好 stackoverflow 社区,

我的 CodeIgniter 有点问题。 我在我的 app 文件夹中使用了两个应用程序。第一个是前端,第二个是后端。

在我的根目录中,我有两个 .php 文件。一个 index.php 指向前端目录,一个 backend.php 指向后端目录。

由于我使用 mod rewrite 来获得干净的 URL,因此存在问题。 URL 结构如下:www.domain.com/controller/action

这是我前端应用程序中控制器的操作。

我使用 htacces 来摆脱域和控制器之间的 /index.php/ 。 要访问我的后端应用程序,我希望我的 URL 像这样 www.domain.com/admin/controller/action

因此我有这个重写规则:

RewriteCond %{REQUEST_URI} ^admin.*
RewriteRule ^admin/(.*)$ /backend.php?/$1 [L]

现在的问题: CodeIgniter 假定 /backend/ 是第一个 URI 段,并想将其误认为是我的控制器。

我真的必须编辑 CodeIgniter 的核心,以告诉它不要使用服务器请求 URI 还是有其他技巧?

提前致谢, 托马斯

【问题讨论】:

    标签: php .htaccess codeigniter url-routing codeigniter-url


    【解决方案1】:

    这真的行不通。查看 config/config.php 和 config/settings.php 等以获取需要设置的常量...您确实需要在单独的“应用程序”目录中运行每个应用程序。还值得问问自己它们是否甚至需要是“单独的”应用程序......

    基本上,在你还可以的时候停止走这条路,这会导致心碎和大量可怕的代码。

    【讨论】:

    • 感谢您的回答 =) 我的目的是将前端和后端分开,以便能够将我的后端重用于其他项目。你有什么建议?
    • 使用 CI 的可爱的新“包”功能,它可以让您重用某些代码,或者为 CI 构建另一个用作 REST API 的“应用程序”。 CI 的软件包文档很难找到,但 PS 自己描述了他们的工作:philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules。在这两个选项中(可能还有更多),我会选择 API :)
    【解决方案2】:

    我建议不要在控制器中有一个名为“admin”的文件夹,而不是有两个应用程序文件夹,您还可以在您的 modelsviews(甚至 libraries)中有一个名为“admin”的文件夹,您可以然后退出这个项目并转移到其他项目。

    这将允许您仅使用标准 rewrite 从 URL 中删除 index.phpdomain.com/admin 将指向控制器中的管理文件夹。

    您只需要确保在根控制器文件夹中没有名为“admin.php”的控制器,否则您会遇到问题。

    有关更多信息,请查看:CI 文档中的Organizing Your Controllers into Sub-folders

    另请注意,开箱即用的 MVC 框架可能并不总是最适合用于创建 CMS。通常,MVC 框架最适合用于快速创建具有相当静态的routes 指向特定controllers 的Web 应用程序。另一方面,CMS 倾向于对网站进行完全控制,这会导致数据库驱动的路由,这通常会消除对典型 controllers 的需求,除非您有大量修改过的路由系统。

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      相关资源
      最近更新 更多