ďťż

[PHP] Słowa kluczowe w adresie URL Jak zamieniać?

       

Podstrony


telcocafe

Jak zamieniać tytuły stron na adresy URL? Najpierw trochę o zaletach i wadach:

Słowa kluczowe w adresach URL
+ Po wstawieniu do statusu komunikatora widać od razu tytuł
+ Niektóre wyszukiwarki wyświetlają wyżej strony z takimi adresami
+ Użytkownik łatwiej orientuje się, widząc adres gdziekolwiek
+ Można nie wyświetlać ID (ale wtedy szukamy w bazie po tytułach, a nie ID)
− Im krótszy adres, tym lepiej
− Lepiej samemu opisać link niż zdać się na wygenerowany tytuł
− Długie adresy często nie mieszczą się w opisach lub innych mediach
− Większe obciążenie dla serwera (ewentualnie można zapisać link do cache)

Niektórzy jednak chcą mieć taką funkcję. Jak najlepiej wygenerować tytuły do linków?

1. Jedno wyrażenie niczego nie załatwi
preg_replace('#[\W]+#u', '-', 'Jak włączyć ów Mozillę Firefox 4.0')zamieni na: Jak-w-czy-ów-Mozill-Firefox-4-0

Nie o to chodzi, aby wyrzucić wszystkie ogonki. Szkoda, że niektóre przeglądarki zamieniają je na procenty i liczby, ale jeśli jest taka sytuacja, to dobrze zamienić na łacińskie odpowiedniki. Dotyczy też liter innych języków, np. niemieckiego.

2. Iconv lepszym wyjściem
Znam metodę z iconv. Można znaleźć je na blogu użytkownika eRIZ. Trochę za dużo operacji.

3. A może PHP wspiera takie operacje?
Czy ktoś natknął się na lepsze rozwiązanie? Być może wystarczy użyć mniej znanych funkcji PHP?

Czy generować linki w locie, czy lepiej zapisać je do bazy albo do "wielkiego, globalnego indeksu"?
Użytkownik Ferrari edytował ten post 20 maj 2010, 17:11


ascinator? :) takie przerobione tytuły na "slugi" można stosować, choć Google nie zaleca tworzenia "nienaturalnie" długich adresów URL.
W Django w Panelu Admina funkcja Javascriptowa potrafi generować sluga na żywo na podstawie wartości wpisywanej w inne pole (np. tytuł artykułu), co dalej jest już walidowanie po stronie Pythona przy zapisie (slug trafia do bazy danych, nie jest elementem generowanym na żywo) i można stosować slugi jako unikalny identyfikator zamiast ID - wystarczy oznaczyć w modelu pole sluga jako unikalne. Wizualnie takie linki wyglądają "ładnie" czasami, ale na Google większego wrażenia raczej nie robią.


− Większe obciążenie dla serwera (ewentualnie można zapisać link do cache)
Przestań pisać głupoty, albo przerzuć się na CMSa w Asemblerze. Twój prosty skrypcik nie jest projektowany ani przeznaczony na serwisy wymagające jakiejkolwiek ponadprzeciętnej skalowalności więc cokolwiek zrobisz - nie będzie to miało wpływ na "skalowanie się" małych stronek pod niedużym ruchem. Jak na razie twoje "optymalizowanie" doprowadza do tego że stosujesz złe rozwiązania, lub tracisz czas wymyślając własne pokrętne i wcale nie lepsze rozwiązania od tego co opisane w kanonach przez pokolenia zawodowych programistów ;)
Użytkownik Riklaunim edytował ten post 20 maj 2010, 19:12
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.