Unikanie zdublowanych tytułów SEO friendly
Mar 01
Często budujemy linki SEO friendly umieszczając tytuły newsów, kategorii, produktów etc. Problemem może być powtarzanie się tytułu (dajmy na to nazwy produktu) zawartego w URL:
http://example.com/nazwa-produktu.html
Oczywiście można to objeść podając ID produktu i kategorii w adresie:
http://example.com/6521,nazwa-produktu.html
Chcemy tego uniknąć. Jak zatem rozwiązać problem zdublowania? Przed rozpoczęciem działań stwórzmy sobie mały plan działania:
- Zamiana tytułu newsa ze zwykłego na SEO friendly.
- Pobranie tytułów newsów pasujących do wzorca: LIKE ‘nasz-tytul%’.
- Dodanie sufiksu do tytułu -2 (jeżeli istnieje -2 wówczas -3), tak aby powstał nasz-tytul-2, nasz-tytul-3 w przypadku powtórzeń.
Krok 1. Stworzenie tytułu SEO friendly (listing).
Krok 2. Pobranie podobnych tytułów z bazy danych (listing).
Krok 3. Dodanie sufiksów do tytułów, jeżeli istnieją podobne, które uniemożliwiają dodanie rekordu (listing).
Teraz zmienna $sRewrite zawiera tytuł SEO, który możemy śmiało wpisać do bazy danych – na pewno sie nie powtórzy :)
Note: Przykłady zostały opisane na bazie mojego frameworka Vframe używając klasy Vframe_Util_Rewrite z której można skorzystać.

Co to jest “surfix”? Chyba chodziło Ci o sufiks :-)
A co do meritum – jaka jest różnica w dodawaniu sufiksu w postaci kolejnego numeru tytułu, a ID? Jakieś zalety?
Różnica jest taka, ze trzeba zrobić jedno zapytanie więcej, przeliczyć ilość takich samych tytułów, sprawdzić max sufix i dodać kolejny.
Jak dla mnie wynajdywanie koła na nowo.
Że w ogóle nie wspomnę, że wyszukiwanie w bazie po stringach (nawet z dobrze nałożonymi indeksami, nie jest IMHO zbyt dobrym pomysłem.
Wyszukiwanie po czymś innym niż ID (które nie jest INT), dla większej ilości rekordów, to optymalizacyjny gol samobój ;-) Trochę rozsądku, nie przesadzajmy z tymi przyjaznymi adresami.
Pisząc jaka jest różnica chodziło mi raczej o różnicę dla wyszukiwarek ;-)
ID w przyjaznym linku łatwo wydzielić i według niego przeszukiwać bazę, nie jest potrzebna ta otoczka do “mapowania” adresów.
Mam jedną uwagę.
A co jeśli gdzieś w międzyczasie zmienimy tytuł artykułu? Zmieni się też SEO Friendly nazwa przecież. No bo jeżeli się nie zmieni, znaczy że nie jest zgodna z tytułem artykułu, znaczy nie jest SEO Friendly, prawda? I co teraz stanie się ze wszystkimi linkami prowadzącymi do tego artykułu? Nie będą już do niego prowadzić.
Ergo, zostawienie ID w URLu to nie tylko łatwiejsze dobranie się do artykułu ale i łatwiejsze modyfikacje. Cokolwiek by nie stało się z tytułem ID pozostanie zawsze takie same. (oprócz usunięcia oczywiście, ale to inna bajka:)
pozdr.
@siemakuba, jeżeli mówimy tutaj o jednej aplikacji, to nie ma problemu. Natomiast jeżeli chodzi o linkowanie z zewnątrz, gdzie system routingu (który powinien być bardzo inteligentny) nie działa to sprawa jest równie prosta. Dlaczego planeta.php.pl posiada wpisy i każdy prowadzi do notki? Ponieważ żadko (o ile w ogóle) zmienia się tytuły notek. Równie dobrze możesz podejść do sprawy tak, że witryna www znajduje się pod inną domeną kilka razy dziennie.
No, nie do końca bym się zgodził. Jeżeli chodzi o notki – owszem, tu często się to nie zmieni. Ale jeżeli odniesiemy to np. do kategorii, to moim zdaniem nazwa kategorii może się zmienić.
Poza tym, biorąc pod uwagę pomysłowość niektórych klientów z jakimi miałem okazję pracować – zmienić może się wszystko. W najmniej spodziewanym momencie ;)
Anyway, absolutnie nie umniejszam twojej koncepcji – jest jak najbardziej poprawna. Coś takiego wykorzystywane jest na goldenline.pl – link do profilu budowany jest z imienia i nazwiska, a jak trafi się dwóch Janów Nowaków to drugi z nich będzie miał profil z adresem (…)/jan-nowak2
pozdr.