Redirect 301 trong laravel 8
Để thực hiện redirect 301 trên Laravel 8, bạn có thể sử dụng Route Redirects hoặc Middleware Redirects.
- Route Redirects:
Ở file route của bạn:
Route::redirect('/old-url', '/new-url', 301);
Trong đoạn mã trên, /old-url
là đường dẫn cũ và /new-url
là đường dẫn mới.
Tham số thứ ba là mã HTTP status code, ở đây là 301 (Moved Permanently).
Nếu bạn muốn redirect nhiều đường dẫn cũ, bạn có thể thêm nhiều Route Redirects như sau:
Route::redirect('/old-url-1', '/new-url-1', 301);
Route::redirect('/old-url-2', '/new-url-2', 301);
- Middleware Redirects: Tạo một middleware mới bằng câu lệnh artisan:
php artisan make:middleware RedirectOldUrls
Mở file app/Http/Middleware/RedirectOldUrls.php
và thêm đoạn mã sau:
<?php
namespace App\Http\Middleware;
use Closure;
class RedirectOldUrls
{
public function handle($request, Closure $next)
{
$redirects = [
'/old-url-1' => '/new-url-1',
'/old-url-2' => '/new-url-2',
];
if (array_key_exists($request->getRequestUri(), $redirects)) {
return redirect($redirects[$request->getRequestUri()], 301);
}
return $next($request);
}
}
Mảng $redirects
chứa danh sách đường dẫn cũ và mới của bạn.
Nếu đường dẫn yêu cầu được tìm thấy trong mảng $redirects, middleware sẽ redirect nó đến đường dẫn mới với mã HTTP status code 301.
Sau đó chỉ cần thêm middleware vào các route cần redirect bằng cách sử dụng phương thức middleware
trong file route của bạn là oke.
Pro Laravel giúp em với ! Câu hỏi về Manually Authenticating trong Laravel
Với Auth::attemp thì bạn cũng có thể thêm các điều kiện bổ sung vào truy vấn xác thực, vì nó nhận 1 array để check, ví dụ:
if (Auth::attempt(array('email' => $email, 'password' => $password, 'role_id' => 1])))
{
// The user is active, not suspended, and exists.
}