Šiandieną nemažai laiko praleidau skaitinėdamas apie Apache modulį mod_rewrite, mat užsinorėjau šioje svetainėje gražių URL’ų (Tarkim http://www.lietuvoje.lt/~moxliukas/browse/42 vietoj įprastinio http://www.lietuvoje.lt/~moxliukas/index.pl?id=42). Galingas daiktas.
Benaršydamas Apache modulių aprašymus radau labai neblogą svetainę refcards.com, kurioje galima atsisiųsti glaustus Apache, o svarbiausia mod_perl komandų sąrašus. Labai naudinga turėti pasidėjus po akimis. Hmmm… reiktų ir Perl bei PHP kažką panašaus padaryt… Ir aišku apie regexpus.
khlhlhlhlh
bet tas grozis, laaaaaaabai ilgai kraunasi ;)
nu gerai, ne laaaaaaabai ilgai, o keliom milisekundem ilgiau ;)
koks skirtumas, svarbus ne url'o grozis, o puslapio ;)
Hmmm… Ilgai kraunasi? Turėtų būt tik keliom mikrosekundėm ilgiau
To op0sum:
Na su URL grožiu irgi ten visokių dalykų yra… Lengviau prisimint http://kazhkas.com/foo/23 negu http://kazhkas.com/index.pl?foo=23
Be to ten kartais fintų su search enginais būna
o buna zmoniu, kuriems kelios mikrosekundes amzinybei prilygsta ;) biskuliuka ilgiau :)
tokam smulkiam darbeliui geriau neprasidėti su mod_rewrite ,
įsijungi apache 1.3.* MultiViews ant apache 2.0 yra irgi spec raktelis, ir tada norint padaryt :
http://kazkas.com/foo/23
sukuri savo foo.pl skripto šmotą, ir su juo parsini url'ą
(čia iš php praktikos , nes nežinau ar mod_perl'as turi tokios
informacijos)
išsiparsinęs url'ą gali tuos 23 interpretuot kaip nori.
usio.
o mod_rewrite reikalingas daugiau sudėtingesniems atvejams kai reikia reikšmes perstatinėti iš vienos vietos į kitą, galbūt keisti formatą o arba su wild characteriniais DNS'ais : SESSIONID3215465465465465464654.moxliukas.lt/blog/23/8 serve rewraitini į: http://www.moxliukas.lt/blog.pl?id=23&pid=8&sid=SESSIONID3215465465465465464654
Aišku Perlas gali ir per $ENV{PATH_INFO} pasiimt (jei CGI) arba per $r->path_info() (jei per mod_perl ir $r yra Apache::Request objektas)
Tiesiog čia tik skaitinėjau apie galimybes ir neturėjau noro perrašinėt patį Perl kodą. O .htaccess užteko įdėti keletą eilučių nekeičiant Perlinio kodo:
RewriteEngine on
RewriteRule ^browse/([0-9]+) /~moxliukas/index.pl?id=$1
RewriteRule ^browse$ /~moxliukas/index.pl
RewriteRule ^browse/(.*) /~moxliukas/$1