A site in general, it's best to go all https.
May 7, 2017
5
Level 1
Force Some Routes to HTTPS
How can I force some Spark routes to HTTPS (/settings, /login, /password, /webhook), but make sure all the other routes are HTTP? Can I wrap middleware based on a URL prefix and not mess with the built-in Spark routes? I'd also like any links from HTTPS pgae back to a non-forced URL to be HTTP. Thanks.
Level 1
This worked for my purpose:
<?php
namespace App\Http\Middleware;
use Closure;
use URL;
class HttpsRedirect
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!app()->environment('local') && $request->isMethod('get') && !$request->ajax()) {
if(
$request->is('path1*') ||
$request->is('path2*') ||
$request->is('path3*')
) {
if(!$request->secure()) {
return redirect()->secure($request->path());
}
}
else if($request->secure()) {
URL::forceScheme('http');
return redirect($request->path());
}
}
return $next($request);
}
}
Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\HttpsRedirect::class,
];
Please or to participate in this conversation.