ریدایرکت از http به https در لاراول
سلام
زمانی که وب سایت خود را با لاراول طراحی میکنید و روی سرور بارگزاری میکنید، اگر گواهی https را فعال کرده باشید میتوانید، احتمالا با خطای ناامن بودن مواجه بشید، برای رفع این مشکل در این مقاله نحوه صحیح ریدایرکت از http به https را آموزش میدهیم، در ادامه همراه بپرسم باشید.
چگونه به https ریدایرکت کنم؟
تغییر مسیر HTTP به HTTPS با فایل htaccess. آسان است، اما این روش مناسبی برای انجام این کار در چارچوب لاراول نیست.
- به صورت معمول همه از کد زیر برای ریدایرکت استفاده میکنند، احتمالا شما هم از کد زیر استفاده کردید! ولی اگر نکردید میتوانید این را به ابتدای فایل httaccess. اضافه کنید:
۱ ۲ ۳ |
RewriteEngine On RewriteCond %{SERVER_PORT} ۸۰ RewriteRule ^(.*)$ https://www.yourdomain.ir/$1 [R,L] |
چگونه در لاراول ریدایرکت کنم؟
می توانید کاری کنید که با کلاس Middleware کار کند. بذار یه ایده بهت بدم در اینجا، ما باید Middleware را ایجاد کنیم، بنابراین به سادگی Middleware را در مسیر زیر ایجاد می کنیم و سپس شما باید Middleware ایجاد شده را در فایل Kernel.php ثبت کنید.
پس اگر موافق باشید مراحل زیر را انجام دهیم:
ساخت Middleware برای ریدایرکت https
حال باید میدلور «HttpsProtocol» ایجاد کنیم و کدی مینویسیم تا HTTP را به لینک https هدایت کنیم. بنابراین در اینجا من کدی را برای تغییر مسیر و ساخت فقط برای سرور تولید نوشته ام. پس بیایید Middleware بسازیم.
۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ |
<?php namespace App\Http\Middleware; use Closure; class HttpsProtocol { public function handle($request, Closure $next) { if (!$request->secure()) { return redirect()->secure($request->getRequestUri()); } return $next($request); } } ?> |
سپس باید این Middleware را در فایل Kernel.php به صورت کد زیر ثبت کنیم.
مسیر شما برای کرنل: app/Http/Kernel.php
شما فقط باید این خط را در بخش Middleware Groups اضافه کنید.
۱ |
\App\Http\Middleware\HttpsProtocol::class, |
به فایل کامل 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 = [ \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, ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \App\Http\Middleware\HttpsProtocol::class, ], 'api' => [ 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'role' => \App\Http\Middleware\Role::class, 'superadmin' => \App\Http\Middleware\Superadmin::class ]; /** * The priority-sorted list of middleware. * * This forces non-global middleware to always be in the given order. * * @var array */ protected $middlewarePriority = [ \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\Authenticate::class, \Illuminate\Routing\Middleware\ThrottleRequests::class, \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Auth\Middleware\Authorize::class, ]; } |
به همین سادگی توانستیم با ساخت یک Middleware و با کمک Kernel.php به صورت اصولی در لاراول ریدایرکت http به https را انجام دهیم.
چنانچه مشکلی در رابطه با این مطلب داشتید در بخش پرسش و پاسخ سایت میتوانید بپرسید؛ همچنین میتوانید از بخش گفتگوی آنلاین با کارشناسان بپرسم در ارتباط باشید.
موفق باشید.
ارسال نظر
شما باید وارد شوید یا عضو شوید تا بتوانید نظر ارسال کنید