Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][MySQL][PHP] Przyjazne linki i .htaccess
Forum PHP.pl > Forum > Przedszkole
roobik
Witam.
Przyjazne linki to temat wałkowany setki razy. Przejrzałem dość sporo tematów (zarówno na tym Forum, jak i na innych stronach) i szczerze mówiąc mam niezły mętlik... Im bardziej się w ten temat zagłębiałem, tym mniej wiem.

OK. Postanowiłem więc działać i sprawdzić czy i jak to hula. Robię to na dziale z serialami online, a jak wiadomo tytuły poszczególnych odcinków niekiedy "szokują" ilością znaków nie-alfanumerycznych, czyli np. !, ?, [, ], ", '...
Ponadto (jeśli chodzi o polskie seriale) są polskie znaki diakratyczne. No i żeby było jeszcze "fajniej", to są spacje.

Dobra - do rzeczy.
Do tej pory, aby wejść na konkretny odcinek, trzeba było wejść na adres:
www.moj_serwer.pl/filmy.php?id=777

Tytuł serialu: 07 zgłoś się
Tytuł odcinka: Odc. 1 - Major opóźnia akcję

Już w samym tytule serialu mamy na dzień dobry ł, ś i ę oraz spacje.
W tytule odcinka jeszcze kropka...

Moje założenie:
www.moj_serwer.pl/07_zglos_sie/Odc._1_-_Major_opoznia_akcje,777

Zmieniłem więc wyświetlanie linków z takiego:
  1. filmy.php?id='.$id.'<br>';

na taki:
  1. filmy.php?title='.$title.'&podt='.$podt.'&id='.$id.'<br>';



Gdzieś na Forum ktoś polecił stronę generateit.net, gdzie elegancko można zobaczyć co i jak zrobić. Skopiowałem więc mój "nowy" link i oczywiście wyszły mi krzaczki:
  1. www.moj_serwer.pl/test/filmy.php?title=07%20zg%B3o%B6%20si%EA&podt=Odc.%201%20-%20Major%20op%F3%BCnia%20akcj%EA&id=777



Zarysowałem mniej więcej sprawę, więc teraz pojawiają się kłopociki:
1. Polskie "ogonki" - zamienić je w samym skrypcie, czy też w .htaccess ?
Jakie rozwiązanie jest lepsze?

2. Inne znaki (spacje, kropki, nawiasy kwadratowe, pytajniki, wykrzykniki itp... itd...):
jak sobie z nimi poradzić? Bo raczej nie muszą (nie powinny?) być w adresie...

3. Grubsza sprawa. Czy muszę ustawić każdy odcinek w .htaccess (a baza liczy coś około 6000 odcinków), czy też jest jakaś metoda "uniwersalna" (jedna linia), że np. pobierając tytuł, podtytuł oraz id, plik .htaccess sam będzie "potrafił" przerobić każdy tytuł?

4. Kolejna sprawa to wujek Google. Wyszukiwarki już kierują do szukanych odcinków, a tu nagle będą "nowe" adresy i skąd wujek Google ma wiedzieć, że one są? Ktoś w Googlach kliknie na stary adres (który do tej pory kierował do konkretnego odcinka), a teraz, jak ktoś kliknie, to wywali go na moją str główną...


Bardzo proszę o pomoc. Zacząłem i szkoda by było...
Być może pytań będzie jeszcze więcej, ale przynajmniej wszystko będzie w jednym miejscu (dla potomnych smile.gif ). Choćby to, czy ma to sens, jeśli chodzi o SEO (byłem na stronach, gdzie arty pochodziły nawet z roku 2006...).

Z góry bardzo dziękuję za wszelkie (p)odpowiedzi.

Pozdrawiam!
bostaf
Cytat(roobik @ 17.05.2017, 12:46:49 ) *
1. Polskie "ogonki" - zamienić je w samym skrypcie, czy też w .htaccess ?
Jakie rozwiązanie jest lepsze?
Najlepiej by było w bazie. Generalnie taki skrócony tytuł artykułu nazywa się slug. Robisz w podstawowej tabeli opisującej arytuły, czyli u Ciebie filmy/odcinki seriali, kolumnę "slug" i na etapie tworzenia nowego wpisu generujesz sluga.

Cytat(roobik @ 17.05.2017, 12:46:49 ) *
2. Inne znaki (spacje, kropki, nawiasy kwadratowe, pytajniki, wykrzykniki itp... itd...):
jak sobie z nimi poradzić? Bo raczej nie muszą (nie powinny?) być w adresie...
Litery ze znakami diakrytycznymi zastąpić odpowiednimi alfanumerami z zakresu [a-z1-9]. Spacje zastąpić myślnikami. Pozostałe znaki usuwać. Np: "Odc. 1 - Major opóźnia akcję" -> odc-1-major-opoznia-akcje. Nikt sie nie wczytuje w urle. Chodzi tylko o to, żeby były w miarę semantyczne i zrozumiałe. Tu trochę działa podświadomość i intuicja wzrokowa, gramatyka/ortografia się nie liczy.

Cytat(roobik @ 17.05.2017, 12:46:49 ) *
3. Grubsza sprawa. Czy muszę ustawić każdy odcinek w .htaccess (a baza liczy coś około 6000 odcinków), czy też jest jakaś metoda "uniwersalna" (jedna linia), że np. pobierając tytuł, podtytuł oraz id, plik .htaccess sam będzie "potrafił" przerobić każdy tytuł?
.htaccesem się w ogóle nie przejmuj. Tak jak wyżej napisałem - slugi do bazy.

Cytat(roobik @ 17.05.2017, 12:46:49 ) *
4. Kolejna sprawa to wujek Google. Wyszukiwarki już kierują do szukanych odcinków, a tu nagle będą "nowe" adresy i skąd wujek Google ma wiedzieć, że one są? Ktoś w Googlach kliknie na stary adres (który do tej pory kierował do konkretnego odcinka), a teraz, jak ktoś kliknie, to wywali go na moją str główną...

Google przeindeksuje. Ale starymi linkami to rzeczywiście Ty musisz się zająć. I to by już trzeba regułkami w htaccess zrobić. I ja bym tu bazował na ID filmu/odcinka. Ja bym proponował żebyś zmienił swoje założenie urla z
www.moj_serwer.pl/07_zglos_sie/Odc._1_-_Major_opoznia_akcje,777
na
www.moj_serwer.pl/123/07-zglos-sie/777/odc-1-major-opoznia-akcje

Taki url bez problemu skomponujesz w routerzee każdego frameworku i bez frameworka też. I taki url pozwoli Ci łatwo skomponować regułkę w htaccess przekierowującą ze starego na nowy url.

Patrz też: php slugify
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.