具有多个应用程序的CodeIgniter URI路由(htaccess)

时间:2011-06-03 15:55:23

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

Hello stackoverflow社区,

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

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

由于我使用mod重写以获得干净的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或是否还有其他技巧?

提前致谢, 托马斯

2 个答案:

答案 0 :(得分:1)

这真的不行。查看config / config.php和config / settings.php等需要设置的常量......你真的需要在一个单独的'application'目录中运行每个应用程序。如果他们甚至需要成为“独立”的应用程序,也值得问问自己......

基本上,当你仍然可以停止沿着这条路走下去时,它会导致心碎,以及大量可怕的代码。

答案 1 :(得分:0)

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

这样您就可以使用标准rewrite从网址中删除index.phpdomain.com/admin会指向控制器中的管理员文件夹。

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

有关详细信息,请参阅CI文档中的Organizing Your Controllers into Sub-folders

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