开发者

CodeIgniter URI Routing (htaccess) with multiple Applications

Hello stackoverflow community,

I've got a little Problem with my CodeIgniter. I use two applications in my app folder. The first one is the frontend, the second one the backend.

In my root directory I've two .php files. An index.php leading to the frontend directory and a backend.php leading to the backend directory.

Since I use mod rewrite in order to get clean URL's there is a problem with that. The URL structure is the following: www.domain.com/controller/action

That's the action of the 开发者_运维知识库controller in my frontend Application.

I use htacces to get rid of the /index.php/ between domain and controller. To access my backend application I want my URL to be like this www.domain.com/admin/controller/action

therefore I have this rewrite rule:

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

Now the problem: CodeIgniter assumes that /backend/ is the first URI segment, and wants to treat it mistakenly as my controller.

Do I really have to edit the core of CodeIgniter in order to tell it not to use the Server Request URI or is there another trick?

Thanks in advance, Thomas


This really isn't going to work. Check out config/config.php and config/settings.php etc for constants that need setting... You really need to run each application in a separate 'application' directory. It's also worth asking yourself if they even need to be 'separate' applications...

Basically, stop going down this path while you still can, it will lead to heartbreak, and reams of horrible code.


Instead of having two application folders I would suggest having a folder within the controller called 'admin', you could also have folders within your models, views (even libraries) named 'admin' which you could then pull out of this project and move to other projects.

This would allow you to just use a standard rewrite to remove the index.php from the URL, and domain.com/admin would point to your admin folder within the controller.

You just need to be sure not to have a controller within the root controller folder named 'admin.php' or you will run into issues.

For more information take a look at: Organizing Your Controllers into Sub-folders within the CI docs.

Also note that an out of the box MVC framework might not always be best used for creating a CMS. Typically an MVC framework is best used to quickly create web applications which have fairly static routes pointing to specific controllers. CMS's on the other hand tend to give full control over the website, which leads to database driven routes which often eliminate the need for typical controllers unless you have a heavily modified routing system.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜