[php] Redakční systém a mod_rewrite

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod tenk 14. 11. 2005 14:01

Mám problém s mod_rewrite a jeho implementací do redakčního systému Webcreator. Zatím vypadá odkaz na článek takto:

article.php?id=1

Celkem snadno bych tak mohl udělat odkazy ve tvaru:

article/1/

To se mi ale nelíbí. Chtěl bych aby odkazy vypadaly nějak takhle:

article/nazev-clanku/

Bohužel nevím jak no to. Číslo z nové adresy článku dovedu převést na proměnnou ID, ale naze-clanku nevím jak převedu. Napadlo mě vytvořit v databázové tabulce ještě jeden řádek, který by se jmenoval např. seourl, do něj vložil tento patvar názvu článku nazev-clanku a pak vyhledával články ne podle ID, ale podle řádku seourl.

Je to možné? Jak se to obvkle dělá?
tenk
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod miho 14. 11. 2005 18:24

Ano, dela se to vetsinout tak, jak popisujes- dodatecny sloupec (vlastne ani nemusi byt dodatecny, pri rozumne delce neni retezec spatnym primarnim klicem; ale to bychom odbihali od tematu) s vycistenym nazvem clanku.
miho
Hlavní administrátor
Uživatelský avatar

Odeslat příspěvekod Lemur 15. 11. 2005 00:14

Jenom je treba dat pozor na oescapovani, jako ochranu proti SQL injection attack.

Jinak - docela zalezni, jakym zpusobem se to URL s nazvem clanku bude vytvaret. Osobne si myslim, ze velmi dlouhe URL, i kdyz jsou slozeny z beznych slov (typu http://www.stranky.cz/jak_naklonovat_so ... baveni.php ) nejsou zas o tolik lepsi nez napr. URL slozena z datumu a poradoveho cilsa clanku (typu http://www.stranky.cz/05/11/15/clanek2.php ).

Mimochodem, ta druha moznost je o dost rychlejsi - prevede se datum a pak staci hledat jen v ranci jednoho dne. Navic je porovnavani retezcu o dost pomalejsi nez porovnavani cisel. A pokud si nekdo pamatuje nazev, stejne vetsinou pouzije fulltextove vyhledavani nebo Google.
Lemur
VIP uživatel
Uživatelský avatar

Odeslat příspěvekod miho 15. 11. 2005 00:36

Toto se urcite nedela kvuli rychlost ale kvuli SEO neboli optimalizaci pro vyhledavace. Treba Google slovum v adrese prirazuje velmi vysoky vyznam.
miho
Hlavní administrátor
Uživatelský avatar

Odeslat příspěvekod Lemur 15. 11. 2005 01:10

Ano, v pripade SEO-optimalizace je opravdu lepsi plnohodnotny nazev, i za cenu nutnosti pouzivani fulltextovych indexu v databazi. Jedina mensi nevyhoda je diakritika. Zatracenej Hus a ty jeho nabodenicka ...
Lemur
VIP uživatel
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků