Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Redirect All Requests To HTTPS

Tags:

laravel-4

Our entire site is to be served over https. I have 'https' in each route. However, how do I redirect them to https if they attempt it over http?

Route::group(array('https'), function()
{
     // all of our routes
}
like image 659
julie-coderiver Avatar asked Nov 14 '13 01:11

julie-coderiver


1 Answers

Using App::before

You might be able to take advantage of the App::before() block in the app/filters.php file.

Change the block to include a simple check to see if the current request is secure, and if not, redirect it.

App::before(function($request) {     if( ! Request::secure())     {         return Redirect::secure(Request::path());     } }); 

Using Filters

Another option might be to create a filter like so. People generally store this also in app/filters.php.

Route::filter('force.ssl', function() {     if( ! Request::secure())     {         return Redirect::secure(Request::path());     }  }); 

You can then enforce that new filter to any of your routes, route groups, or controllers like this.

Individual Route

Route::get('something', ['before' => 'force.ssl'], function() {     return "This will be forced SSL"; }); 

Route Group

Route::group(['before' => 'force.ssl'], function() {     // Routes here. }); 

Controller

You'll need to do this in your controller's __construct() method.

public function __construct() {     $this->beforeFilter('force.ssl'); } 
like image 82
Sajan Parikh Avatar answered Oct 01 '22 13:10

Sajan Parikh