Bir web sitesi için kullanıcı dostu URL'leri ve veritabanı kimliği gerçeklerini sağlama


24

Ürünler, blog yazıları ya da bir şey olsun, kaynaklar veritabanımız var. Herkese açık web sitesi için bunları ele almak üzere bir URL şeması tasarlamamız gerekiyor.

İşte veritabanı kimliğine bağlı iki örnek:

İşte arkadaşça bir örnek:

(Oradaki tarama hayatımı biraz gözden geçirdi)

URL’yi, bir e-postada veya belgede asılı tuttuğunuzda veya gördüğünüzde neyin sonunda olduğu hakkında bir fikriniz olduğundan, arkadaşça URL’leri severim. SEO için daha iyi, ya da eskisi gibi.

Belge veya ürün yeniden adlandırıldığında ne olur? Ya değiştiği için (Wiki değişmeyebilir ama kaynaklarımız değişebilir) ya da yazım hatası nedeniyle, değil mi? Kaynaklarımız çok teknik, uzun sözler ve hataya açık.

Ayrıca, bir sayı olan bir veritabanı kimliğine sahibiz. Bir taklit kiralama mağazası kullanan bir videonun adresi için bir fikre bakalım:

Kimlik açıktır ve DB aramalarında kullanılır. İnce.

Kayar kapılar biti benzersiz değildir ve sadece video başlığından üretilir, GET'de doğrulanabilir, böylece kayar kapılar girilirse ve gerçekten doktor 287171'deki ile uyuşmuyorsa, 404'e cevap verir.

Ya da belki birileri umursarsa, insanların istedikleri gibi yapışmasına izin vererek göz ardı edilebilir. Yani bu URL de işe yarayacak:

Dostça kısmı doğrulama konusundaki sorun, belirtildiği gibi, yeniden adlandırma ya da yazım hatası düzeltmesi sorunudur. Ad değiştiyse ve gerçekleşen etki alanımızda, oradaki URL’leri kırmak istemeyiz.

  • Sadece dost kısmı doğrulamıyor.

  • Doğrulayın, ancak geçmiş parça ID'lerinin hala çalışabilmesi için veri tabanı kaydına "dost kısım" geçmişi "ekleyin!

Düşünceleriniz ve fikirleriniz açıktır.

Luke


11
bu site bile bir kombinasyon http://programmers.stackexchange.com/questions/255684/providing-friendly-urls-for-a-website-vs-realities-of-database-idskullanıyor (başlık değişikliklerinin ışığında doğrulanmamış bir versiyon kullanıyorsanız, aynı zamanda daha kısa "paylaşım" bağlantısı sadece kimliktir: http://programmers.stackexchange.com/q/255684/25768(ve rozet takibi için kullanıcı kimliği)
cırcır

11
URL’nizde benzersiz bir kimliğiniz varsa, sümüklü böcek bölümünü neden doğrulamak istediğinizi anlamıyorum. Görünümler için kullanın ve aramalar için yoksayın.
thorsten müller

Eğer ikinizden biri uygun bir cevap vermek isterse, oy kullanacağım, böylece puanları alacaksınız. Oyların içeri girmesine ve birkaç gün içinde en çok oy alanın cevabını vermesine izin vereceğim.
Luke Puplett


3
Sümüklüböcek terimini daha önce hiç bilmiyordum. Bir kayanın altında olmalıyım. Geddit?
Luke Puplett

Yanıtlar:


6

Kimliği kimliğin URL’de tutulması, gelecekteki en güvenilir yöntemdir ve gösterdiğiniz gibi, URL’ler yine de nispeten iyi görünebilir.

Birden fazla proje tarafından kullanılan bir başka seçenek daha önce kullanılan sümüklü böceklerin bir geçmişini tutmaktır. Başlık değiştiğinde, sümüklüböceği güncellersiniz ve birisi eski bir sümüklü böcek aramaya çalışırsa, eski sümüklü böcek listesinde arama yapın. Bu şekilde eski sümüklü böcekler yeni içerik için yeniden kullanılabilir (veya uygulamanıza bağlı olarak).

Wordpress yaptım ve öyle yaptım friendly_id mücevher muhtemelen Raylar için dost kimlikleri yönetmek için en çok kullanılan mücevher.

Ayrıca, iyi görünen URL’leri sevdiğim halde, bunun daha fazla teknoloji meraklısı kullanıcılar tarafından kullanılan bir özellik olduğunu unutmamak önemlidir. Bazı tarayıcılar URL'leri (veya bir bölümünü) gizlemeye bile başlıyor.


2
Bu sümüklü böcek tarihi, düşündüğüm gibi. Soruyu gönderdikten sonra, kontrol edilmemiş bir sümüklü böcek olan çok sayıda adlandırılmış siteyi fark ettim, bir şey söylemek için onu değiştirebilirsiniz. amazon.co.uk/Blah-Blah-Blah/dp/B004R276L8 çalışır. StackExchange zekicedir çünkü 'düzeltir' ve doğru bağlantının gösterilip paylaşıldığından emin olmak için tarayıcıyı yönlendirir.
Luke Puplett

Bir "sümüklü böcek" insanlar için daha az faydalıdır ve Arama Motoru Optimizasyonu için daha yararlıdır, çünkü bir "sümüklü böcek" veya "kullanıcı dostu URL", sayfanın içeriğiyle ilgili anahtar kelimeler içermelidir. İleri düzey kullanıcılar, sitenize arkadaşça URL'ler eklemenin nedeni değildir. Arama motoru sıralamaları asıl sebep olma eğilimindedir.
Greg Burghardt,

Katılmıyorum. Yalnızca kimlikleri olan URL'lerle çalışmak zordur; listesinden hangisine dönmek isteyebileceğini hatırlamak zor. Veya bağlantının diğer ucunda uygunsuz bir şey olup olmayacağı. Chrome’un adres çubuğu, URL’nin herhangi bir kısmında da yararlıdır.
Luke Puplett

1
@LukePuplett evet SE’nin URL’lerle uğraşma yönteminin sümüklü böcekler söz konusu olduğunda en kolay yol olduğuna inanıyorum.
mbillard 10:14

@GregBurghardt, tek fark tıklama oranlarında, kullanıcılar dost URL’lerde biraz daha fazla tıklama eğilimindedir: stackoverflow.com/questions/505793/…
mbillard

3

Geçmişte iki farklı senaryo kullandım.

  1. /id/some-slugaramak için idkullanılan yerlerde , sümüklü böcek değil. Böylece sümüklü böcek her şey olabilir . Ancak, sümüklü böcek gerçek sümüklü böcek ile eşleşmediğinde, kullanıcı mevcut sürüme yönlendirilir.

  2. /permalinkdurumlar için biz url bir kimliği istemiyordu , ya da nereye url değiştirmek asla rağmen bir kimlik mevcutsa (bkz [1] ve [2] ). Tabii ki, bu durumda arama için kullanılır . Hem mevcut bilgi hem de kalıcı bağlantı (ilk bilgi) veritabanında saklanır.permalink

Bu yollardan hiçbirinde veritabanınızdaki bir sümüklü böcek geçmişini saklamanız gerekmez, bu da çok yakında sorun çıkarır.


ps: İkinci durumda, sosyal kredileri korumak için çok özel bir yönlendirmeye ihtiyacınız olacak:

  • istiyorsanız, kullanıcıları geçerli (kalıcı olmayan) URL'ye yönlendirin
  • sosyal düğmelerde URL olarak kullanılan kalıcı bağlantıya sahip olmak
  • her zaman facebook tarayıcısını kalıcı bağlantıya yönlendir

Tekrar [1] ve [2] 'ye bakın .


Neden sorunlu olacak? Saklarsam ve kimlik ve sümüklü böcek bir şey olursa, ziyaretçi asıl sayfaya gidecektir. SEO için zararlı olacak mı?
Jnanaranjan

Bir sümüklü böcek geçmişi tutmak mı demek istiyorsun? Birisi böyle bir sümüklü böcek kullanmak istediğinde ne yaparsın? Aynı veya başka bir kimlik için mi? Birden çok yönlendirmeyi önlemek için veritabanını ve / veya kodu nasıl tasarlarsınız? Silme işleminden sonra varlığı gizlemek ister misiniz ve yönlendirmeler önceki varlığı ortaya çıkarır mı? Bütün bunlar imkansız değil, ancak sadece tasarım gereği önleyeceğim her türlü soruyu gündeme getiriyor.
Lode

Söylemek istediğim şey, kimliğin URL’de bulunup bulunmadığıdır, ancak ne olursa olsun istenen sayfaya yönlendirilir. Sonra sümüklü böcek geçmişi önemli değil. Yine de android için sorunlu olduğuna katılıyorum.
Jnanaranjan

1
Ah tamam. Senaryo 1 hakkını eklediğim şey bu mu? Yoksa başka bir şey mi demek istiyorsun?
Lode

Evet. Bu doğru.
Jnanaranjan

2

Belge veya ürün yeniden adlandırıldığında ne olur?

HTTP yanıtı 301 (Taşınmış) bu amaç için tasarlanmıştır. Herhangi bir müşteri eski URI’ya giderse, onlara yeni URI’yı gönderirsiniz ve buna yönlendirilebilirler.

Kayar kapılar biti benzersiz değildir ve sadece video başlığından üretilir, GET'de doğrulanabilir, böylece kayar kapılar girilirse ve gerçekten doktor 287171'deki ile uyuşmuyorsa, 404'e cevap verir.

Doğru takip edersem, bu işi kopyalamak, hem kaynak için bir isim tanımlayıcınız hem de aynı URI'daki bir kimliğiniz var. Bu herhangi bir amaca hizmet etmiyor.

Aynı ada sahip birden fazla film hakkında endişeleniyorsanız, URL hakkında film hakkında ek bilgi ekleyebilirsiniz.

http://vidsyeah.com/video/2000/sliding_doors
http://vidsyeah.com/video/1932/sliding_doors

veya

http://vidsyeah.com/video/studios/paramount/sliding_doors
http://vidsyeah.com/video/studios/warnerbros/sliding_doors

Veri modeliniz için bir anlam ifade ediyorsa, özellikle de gruplandırdığınız tek şey onların video olması durumunda, kimlik kullanmada yanlış bir şey olmadığını söylemiş olmak.

http://vidsyeah.com/video/210232
http://vidsyeah.com/video/2342

İstemci, bir bilgisayar veya bir insan kullanıcı, ilk önce URI yapısına çok fazla güvenmemeli, hangi kaynağı bulmak için geri döndüğünüz içeriğe bakmalıdır.

Birinin yalnızca bir kaynağın konumunu tahmin etmesini veya paylaşılan özelliklere (örneğin 2004'teki tüm filmler) dayanarak yapı üzerinde aşağı veya yukarı gitmesini kolaylaştıran mantıklı bir URI sistemine sahip olmanın yanlış bir tarafı yoktur, ancak sisteminiz güvenmemelidir. URI'larınızı değiştirirseniz bu konuda ve hiçbir müşteri kırılmamalıdır

Ya da başka bir deyişle, geceyi değiştirebilirsin.

http://vidsyeah.com/video/studios/paramount/sliding_doors

için

http://vidsyeah.com/video/12323

ve hiçbir müşteri kırılmamalı çünkü istemciler URL'lere değil içeriğe bakıyor olmalı.


Jon'un cevabı gibi, bence bunu düşünürken UX şapkanı giymiyorsun. Adresin kullanılabilirliğini artırmak istiyorum. Sorudaki yorumuma bakın: "Dost URL’leri seviyorum çünkü URL’nin sonunda bir e-postada veya belgede göründüğünüzde ne olduğuna dair bir fikriniz var. SEO için daha iyi, veya daha önce olduğu gibi."
Luke Puplett

2
Bir 301 atmak için doğru kaynağa bakabilmem gerekiyordu, böylece bir tarihe ihtiyacım olacaktı.
Luke Puplett

1
Bir tarihe ihtiyacınız olacak, ancak kaynakları değiştiren bir siteniz varsa, bunun zaten iyi bir fikir olması gerekir.
Cormac Mulhall

Dost URI'lerde sorun yok. URI'nin bir şey olabileceği şemasını yapmazdım ama sonunda bir kimliği varsa hala çalışır. Bu gerçekten herhangi bir sorunu çözmüyor (kullanıcı kimliği hala hatırlamak zorundadır) ve kafa karıştırıcı bir URI şeması sunar (kullanıcı meşru olarak neden bir yazım hatası olan iki farklı URI'nin aynı kaynağa gittiğini sorabilir)
Cormac Mulhall

1
URI’lerde yazım hatalarından endişe ediyorsanız, bununla baş etmenin ortak bir yolu, yanlış yazılmış URL’ler için 404 hata sayfasında URI’ler önerilir. Bir kelime kalıp araması yapabilir ve kullanıcının aradığını düşündüğünüzü geri verebilirsiniz.
Cormac Mulhall

1

BBC aşağıdakiler gibi sümüklü böcek kullanıyor:

  • alfa sayısal (kompaktlık için)
  • benzersiz (aramalar için)
  • sıralı değil (böylece db'ye eklenen şeyler açık kalmaz)

örneğin http://www.bbc.co.uk/programmes/b006mk7h

Her ortak programın bir kimliği ve bir sümüklü böcek var. Kimlikler daha sonra her zamanki gibi otomatik olarak artan tam sayılar olabilir ve boşluklar açığa çıkmaz.


0

RESTful bir bakış açısıyla, URI'ler kullanılabilirliği arttırmak için öngörülebilir ve atasöz hiyerarşik bir yapı izlemelidir.

Bu, tüketicilerin kullanımlarını kolaylaştırır. Verilerinizin ilişkileri varsa, bir tür hiyerarşi gerekir.

Şema gibi görünüyor: \video\[name]\[id]

İsim başka bir sınıflandırma için kullanılmıyorsa, lehine bırakılabilir. \video\[id].

Ancak, videoları sınıflandırmak isterseniz, belki isim yararlı olabilir.

Örnekler:

  • \ Video \ SwingingDoors \ 123
  • \ Video \ SwingingDoors \ 124
  • \ Video \ kayar \ 125
  • \ Video \ kayar \ 126

Gerçekten, erişimin nasıl modellendiğine dair bir tasarım kararı.


Sanırım bunu bir PoV / site bilgi mimarisi PoV'dan düşünüyorsunuz. İnsanlara ve SEO’ya yardımcı olmak için oluşturulmuş bir arkadaşça URL bölümü tanıtmak istiyordum. Görünüşe göre bu yaygın bir şey ve 'sümüklü böcek' adıyla gider. Ad, sınıflandırma için kullanılmıyor ve URL ve site / markamızla daha iyi bir UX yapmak için ekleniyor (bırakılmıyor).
Luke Puplett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.