Redirect www to non-www in Laravel with URL parameters

Port 8080 picture Port 8080 · Nov 5, 2014 · Viewed 20.5k times · Source

How can I redirect URL from www.myapp.co to myapp.co ? And also if the URL has other parameter like www.myapp.co/other-parameter will be redirected to myapp.co/other-parameter where the other-parameter can be anything. Sorry for this noob question, I am still 1 week in using Laravel.

BTW, I am using dynamic subdomain so I need only the redirect www to non-www and not the other subdomains.

Route::group(array('domain' => 'myapp.co'), function() {

    Route::get('/', function() {
        return 'Hello! Welcome to main page...';
    });
    Route::get('/login', function() {
        return 'Login';
    });
    Route::get('/signup', function() {
        return 'Signup';
    });

});

Route::group(array('domain' => '{account}.myapp.co'), function() {

    Route::get('/', function($account) {

        if ($account == 'www') {
            return Redirect::to('http://myapp.co');
        }
        return $account;
    });

});

Answer

Paulo Renato Dias picture Paulo Renato Dias · Nov 13, 2014

If you really want to treat your problem programmatically I think the best solution is to add the next code to your filters.php:

App::before(function($request){
   //Remove the 'www.' from all domains
   if (substr($request->header('host'), 0, 4) === 'www.') {
      $request->headers->set('host', 'myapp.co');
      return Redirect::to($request->path());
   }
});

Basically I am just creating a filter to check if the request starts with 'www.' and in this case redirecting the client to the same path without the 'www.'.