Laravel de web sitesini yaptıktan sonra ssl aktif ettiğinizde env dosyasını ve config dosyasını https ile değiştirseniz bile http ile bağlanıldığında otomatik yönlendirme olmuyor. O nedenle aşağıda paylaşacağım middleware ile gelen istek http den geliyor ise otomatik https e yönlendirmeyi sağlayacak. Bu şekilde siteniz sürekli https ile çalışacaktır.
İlk önce bir middleware oluşturun.
php artisan make:middleware HttpsRedirect
Sonrasında bu middleware’ i açın ve içeriğini şu şekilde oluşturun.
namespace MyApp\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
class HttpsRedirect{
public function handle($request, Closure $next)
{
if (!$request->secure() && App::environment() === 'production') {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
Bu kod şu işe yarıyor gelen istek https mi? ve proje production modda mı? Eğer gelen istek güvenli değil ve projede production mod da ise gelen isteği güvenli şekli ile yönlendir ve devam et.
Sonrasında eklediğimiz middleware’ ın laravelin kernel.php dosyasına eklemesi kalıyor.
app\Http\Kernel.php dosyasını açın sonrasında aşağıdaki kodların olduğu bloğu bulun.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
sonrasında bu bloğun altına yeni eklediğimiz middeware’ ın yolunu ekleyin.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\HttpsRedirect::class
];
Bu işlemlerden sonra siteniz artık https üzerinden çalışacaktır. Ancak env dosyasını ve configdeki site url kısmını da https olarak güncelleyin.
Ayrıca app\Http\Providers\AppServiceProvider.php dosyasını açın ve boot kısmına şu kodu ekleyin.
public function boot()
{
\URL::forceScheme('https');
}
Bu kodda sitenizde çağırdığınız assets yolları link yollarının hepsinin https olmasını sağlayacaktır. Bu kod içinde production kontrolünü ekleyebilirsiniz.
Uyarı !
Son olarakta şunu yazayım. Middleware’ da if içerisinde projenin production modda mı değil mi kontrolü var eğer env dosyanızda APP_ENV=local kısmını APP_ENV=production yapmaz iseniz yönlendirme işlemi çalışmayacaktır. Veya bu kısmı local bırakıp if içerisindeki production kontrolünü kaldırabilirsiniz. Ama yazdığım şekilde olması daha kullanışlı olur sizin için.
2. Yöntem
.htaccess dosyası üzerinden yönlendirme yapmak için aşağıdaki kod blogunu dosyanın en başına ekleyebilirsiniz.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Adım adım gayet detaylı anlaşılır paylaşılmış. Emeğinize sağlık.