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ć.

7 comments

  1. Przemek /

    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?

  2. 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.

  3. 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.

  4. Przemek /

    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.

  5. siemakuba /

    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.

  6. @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.

  7. sieamkuba /

    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.

Leave a Reply