2011-06-03 120 views
1

你好,stackoverflow社区,具有多个应用程序的CodeIgniter URI路由(htaccess)

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

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

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

这是我的前端应用程序中的控制器的行为。

我使用htacces来摆脱域和控制器之间的/index.php/。 访问我的后台应用程序我想我的网址是这样www.domain.com/admin/controller/action因此

我有这样的重写规则:

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

现在的问题: 笨假设那/后端/是第一个URI段,并且想把它当作我的控制器。

我是否真的必须编辑CodeIgniter的核心,以便告诉它不要使用服务器请求URI或者是否有另一个技巧?

由于提前, 托马斯

回答

1

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

基本上,停止沿着这条路,而你仍然可以,它会导致心碎,和令人恐惧的代码大量。

+0

感谢您的答案=) 我的意图是分裂前端和后端,以便能够重用我的后端其他项目。你会建议什么? – Thomas 2011-06-03 16:01:46

+0

使用CI可爱的新“包”功能,它可以让您重新使用某些代码,或者为充当REST API的CI构建另一个“应用程序”。 CI的软件包文档很难找到,但是这里是PS自己描述他们做什么的东西:http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules。在两个选项中(有可能更多),我会去一个API :) – 2011-06-04 10:16:16

0

不是有两个应用程序文件夹中,我建议有所谓的“管理员”的控制器内的文件夹,也可以让你modelsviews(甚至libraries)命名为“管理员”中的文件夹,然后您可以拉出来的这项目并转移到其他项目。

这将允许您只使用标准rewrite从URL中删除index.php,并且domain.com/admin将指向控制器中的管理员文件夹。

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

欲了解更多信息,请看CI文档中的Organizing Your Controllers into Sub-folders

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