Laravel SEO Uyumlu URL
Laravel öğrenmeye başladım ve bi konuyu nasıl yapacağımı çözemedim.
Örneğin ben ürünler için bir route oluştururken aşağıdaki komutu kullanabilirim.
Route::get('/urun/{slug}',[ProductController::class,'index']);
Buradaki yaklaşımda localhost/urun/macbook-pro gibi bir link ortaya çıkıyor. Ancak ben localhost/macbook-pro gibi bir link yapısı yapmak istiyorum.
Bunu düz PHP ile direkt route değişkeni kullanarak yaptığım projemde veritabanında links diye bir tablo oluşturup linkleri içinde kaydediyordum. Tablo yapısı ve PHP tarafındaki kontrolünü aşağıdaki gibi yapıyordum.
url | type | type_id
-- | -- | --
macbook-pro | product | 1
msi-laptop | product | 2
if ($query = $db->from('links')
->where('url', route(0))
->first()
) {
$type_id = $query['type_id'];
$route[0] = $query['type'];
}
Aynı yapıyı laravelde nasıl kurabilirim.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Sorunu aşağıdaki şekilde çözdüm
web.php
Route::get('/{product:slug}',[ProductController::class,'index'])
ProductController.php
public function index(Product $product)
{
return "ürün bulundu"
}
Bu şekilde yaptığım zaman laravel macbook-pro linkini Product modelinin slug kolonunda arayıp bulursa bunu direkt $product değişkenine aktarıyor.
ürünleri veritabanında tutarken slug değerlerinide tutun daha sonra route yapısını kurarken
Route::get('/', [IndexController::class,'index']);
Route::get('/dashboard', [DashboardController::class,'index']);
Route::get('/{product-slug}'[ProductController::class, 'index']);
şeklinde kurun slug olan link diğerlerinin altında kalınca sorunsuz çalışması gerekir.