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
}
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');
}