Redirect 301 trong laravel 8
Xin chào mọi người. Mọi người cho mình hỏi chút, mình đang làm 1 website laravel 8. Bây giờ mình muốn redirect 301 link những bài viết của website cũ sang link bài viết mới. Tên miền vẫn giữ nguyên. bạn nào biết hướng dẫn giúp mình cách redirect auto. Cảm ơn các bạn.!
1 CÂU TRẢ LỜI
Để 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.