" İD OLMADAN SEO URL YAPISI "
Selamlar ;
Seo url yapısı için
seo url şu şekilde olacak.
örnek: Şarkıların güzelleriklieri
http://siteismi.com/sarkilarin-guzellikleri (blog daki bir yazı için)
örnek: Elektrikle çalışan araç (ürün adı)
http://siteismi.com/elektrikle-calisan-arac. (ürün adı)
bütün site url yapısını id olmadan ve tek yapıda nasıl yapabilirin.
slug değerini db kaydedecem.
veri çekerken id yerine slug değerini çekecem.
slug da benzersiz olacak wp de ki gibi.
Sorum şu
1. bu şekilde güvenlik açığı olur mu ?
siteismi. Co/ dan sonraki değeri alıp sorgulacam. Biraz riskli gibi.
2. performans açısında kayıplar olur mu ?
3. Sizin önerileriiz ve eleştirileriniz.
Eyüp Başböyük
E
1- girdiyi doğru şekilde validasyona sokarsan güvenlik açığı oluşturmaz.
2- performans kaybı ancak çok çok mysql sınırlarını bile zorlayacak kadar veri varken ve yine çok fazla kontrol edilecek tür varken (sayfa, ürün, makale, kategori, haber ...)
olur. Sistemin nasıl yazıldığı, çalıştığı sunucunun donanımı ve bir çok etmen daha var performansı etkileyen. Bu durum kendi başına çok büyük bir kayıp yaşatmaz.
3. Önerim router classlarsan birisini kullanın.
Routeları öncelik sırasına göre oluşturun.
Bir içerik girilirken diğer kategorilerle çakışma olmasını engellemek için tüm tablolardan sefurl’leri alan bir view oluşturup ekleme sırasında hatta başlık girilirken AJAX ile anlık olarak sefurl kontrolü yapıp ürün için girilmiş bir başlığın aynısının blog için girilmesini önleyin.
wp de de öyle anlık kontrol edip varsa aynı yapısı yazdırmıyor.
Ama çok tablo olursa her tabloyu tek tek kontro etmesl lazım. urunler blog safyalar birtane slug değerğnin hangi yapıya ait olduğunu bulmak için 3 tablodan sorgu yapacak..
bu kurumsal firma sitesi olacağı için maksimum 1000 sayfayı geçmez.
Eyüp Başböyük Normal çünkü aynı başlıklar yani aynı slug oluşursa router bunu hangi mapte değerlendirip, hangisi fonksiyonu çalıştıracağını çözemez. Bunu böyle de yapamaz mısın? Yaparsın htaccess’le ama sisteme ölüm olur, zulüm olur. Ve öncelik sırası kazanır. Önceden a-urunu diye bir ürün girmişsindir şimdi aynı slugla blog yazısı girersen ve blogların htaccess kuralı ürünlerden önce yazıldıysa girdiğin o ürünü artık kimse görmeyecek çünkü önce blog kuralı eşleşip çalışacak. Router’da bunu önceliğe göre de yapamazsınız eşleştirme aşamasında exception fırlatır
Hüseyin Yarol sql de benzersiz yapsam
Eyüp Başböyük yanlış düşünüyorsun. Tabloları tek tek kontrol ettirmeyeceksin. Bak orada ‘view’ oluştur dedim. Veri tabanında view oluşturacaksın sadece bu view’a bir where sorgusu atıp kayıt var mı yok mu bakacaksın. Her tablo için if else var mı yok mu sorgu olmaz
anldım şimdi. Teşekkür edrerim
tüm seo url linklerinin bulunduğu bir tablo şeklinde view
o zaman iki sorguda iş çözülür. 1. orgu url hangi yapıya adit İD si ne 2. gerekli veriyi getir.
Eyüp Başböyük sql de benzersiz yapsan sadece kendi tablosu içinde geçerli olur, diğer tabloda olması bizim asıl sorununuz zaten yoksa tablo içinde bu alanlar zaten benzersiz olmak zorunda onu tartışmaya gerek yok. Öbür türlü aynı adda 2 ürün girilmesi sorunu çıkar bu sefer son girilen ürün gözükür. Tablo içi de tüm tablolarda da bunun önlemini alacaksın. Sistem de bir kez kullanılan slug başka yere girilmeyecek
Eyüp yapabileceğin çok fazla seçenek var slug hangi tablo da istersen arat istersen view alırken tablo adını da bir sütuna ata sql sorgusu içinde sonra view’a sorgu yaparken onu da çek
slug-control adında bir tablo oluştrup id tabloname element_id slug şekilden tek tabloda tutacam tüm seo url verilerin. hangi verinin hangi tabloda hangi id li elemente ait olduunuda tutacam. o zaman diğer tablolarda slug verisi tutmaya gerek yok . slug-control kontrol tablosunda hederi alıp yola devam edecem. en güzelü bu gibi. tabi kayıt ve görüntüleme iki işlem olacak. ama o kadar olsun.
Eyüp Başböyük önermem. Tablo oluşturmayın ekstradan. Bu gereksiz bir işlem. View oluşturun
Eyüp Başböyük siz SQL VIEW’ı biliyor musunuz?
Hüseyin Yarol Hayır
Eyüp Başböyük bir araştırın zor bir işlem değil. Eğer sizin dediğiniz gibi olursa silme güncelleme ekleme kayda dair veriyi çekme her şey uğraştırıcı olur. Benim dediğim gibi yaparsanız silme güncelleme vs için ekstra bir tabloya gitmeniz gerekmez.
Eyüp Başböyük Phpmyadmin view kullanımı yazın, SQL olarakta view’ı araştırın. Sonuç bulamazsanız özelden yazın detaylı anlatayım
Hüseyin Yarol Çok teşekkür ederim internetten araştırdım sizin dediğiniz daha mantıklı. view de çalışma yapıyorum. Oda kolay biraz daha bakıyorm bloglara.
Eyüp Başböyük tablo adı konusunda da tablo adını veren bir sql sabiti vardı diye hatırlıyorum. Onunla yada bir procedure ile view’a sorgu içinde çekebilirsiniz.
Eyüp Başböyük Yazacağın SQL bu
Eyüp Başböyük Alacağın sonuçta bu
Bu sorguyu SQL panelinden kendine göre düzenleyip, çalıştırıp sonucu doğru şekilde aldığında en aşağıda bu fotoğraftaki gibi "Görünüm oluştur" linki göreceksin ona basıyorsun
bu alanda mevcutta olmayan bir görünüm adını giriyorsun diğer ayarlara dokunmuyorsun. O sana görünüm oluşturup yönlendirecek. Bundan sonra sorgularını oz_slugs tablosuna dayanarak yaparsın. Bu aslında bir tablo gibi çalışır ama tablo değildir. Veri silinmez, eklenmez, düzenlenmez. Sadece yazdığımız sorgunun sonucunu döndürür. Bir veriyi ana tablolardan sildiğinde görünümde otomatik değişir. PHP Versiyonu ve MYSQL sürümü uyumsuz olan sunucularda görünüm sonuçların gözükmemesi gibi sıkıntılar yaşatabilir buna dikkat et. Kolay gelsin..