Q: Change Laravel's default (root) controller In Laravel the default controller is the Home_Controller. However I have a controller called frontend. I want to use this instead of the home controller.
When I register a route like this:
Route::controller(Controller::detect());

then a request to /offer will be handled from within the home controller like home@offer. I want to use frontend@offer and access it from the site's root - not like /frontend/offer.
What should I do?
Thanks in advance.

A: Home_Controller is one of the hard-coded convention which exist in Laravel 3, however there are still ways to define routing to point the Frontend_Controller methods, my preference would be.
Route::any('/(index|offer|something)', function ($action)
{
    return Controller::call("frontend@{$action}");
});

Limitation with this is that you need to define all supported "actions" method in Frontend_Controller.

A: My guess is that the only reason you think the Home_Controller is some sort of default is because you are using Controller::detect(); I really haven't seen anything in the documentation to make me think that the Home_Controller is anything special at all.  In fact, it doesn't even look like it is routed to in the example documentation.  Given that, my first suggestion would be to get rid of Controller::detect() and see if that fixes your problem.
Barring that, have you tried registering frontend as route named home?  It appears that all URL::home() does is search for the 'Home' route, and then redirect to it.  When using controller routing this can be done with something to the effect of.
Route::get('/',
    array(
         'as' => 'home',
         'uses' => 'frontend@index'
    )
);

Or is that not your desired effect?  Do you want all routes which aren't otherwise found to be redirected to your frontend controller?  
If you are concerned about your urls looking pretty, you can probably use some rewrite rules in your .htaccess file to make the whole process of routing to /frontend/index transparent you your users.

A: Add this to your routes.php :
Route::get('/', array('as' => 'any.route.name', 'uses' => 'frontend@offer'));

If you have any other / route, just remove it.
