og allir vilja vera með.<br>
Einn af stærstu göllunum við dýnamískar síður
(s.s PHP, ASP, JSP) er slóðin. Það vill bara þannig
til að auðveldasta leiðin til þess að senda breytur á
milli síðna er í query streng.<br>
Þ.e. eftir skjalanafninu kemur ? svo breyta og ef það þarf
að tengja fleiri breytur við er notað &. Þetta er s.s allt
gott og blessað. Nema hvað, leitarvélar stoppa á spurningamerkinu,
og indexa ekki þær síður sem á eftir því
koma.<br>
Það er lítill tilgangur í að hafa efnismikla og góða
síðu ef enginn finnur hana.
<p>En, where there's will there's a way, sagði einhver og það er
einmitt tilfellið hér.</p>
<p>Ég ætla að fjalla um fjórar leiðir sem hægt
er að nota til þess að forðast þetta. Þær
eru mismunandi góðar, en líka mismundandi auðveldar. Fer
t.d eftir því hvort maður sér sjálfur um vefþjóninn
sem hýsir síðuna eða hvort einhver annar gerir það.<br>
Þessi grein er byggð á grein á webmaster base, svo ég
verði ekki ásökuð um ritstuld by the way.</p>
<p><b>Aðferð 1 - PATH_INFO()</b></p>
<p>Ein leiðin til þess að fegra urlin sín er að hafa
þau í þessu formi: <br>
http://www.hugi.is/vefsidugerd/korkar.php/viewpost/309386/109</p>
<p>Málið er nefninlega, að apache hefur svokallaða "look
back" feature. Það er, ef hann finnur ekki það sem
hann leitar að, þá skannar hann slóðina aftur á
bak þangað til að hann finnur einhvað sem hann kannast við.<br>
Í þessu tilfelli er engin mappa eða skrá sem kallast
"109", og ekkert sem heitir "309386" né "viewpost".
En hann finnur einhvað sem hetir korkar.php og keyrir hana.<br>
Það er global variable sem hetir $PATH_INFO sem geymir upplýsingar
um skrárslóðina. Í þessu til felli $PATH_INFO
= korkar.php/viewpost/309386/109.</p>
<p>Þá er það eina sem er eftir að splitta $PATH_INFO
upp til þess að finna variablein sem okkur vantar.</p>
<pre>$aUppl = explode("/",$PATH_INFO);</pre>
<p>Núna höfum við eftirfarandi upplýsingar sem við
getum notað til þess að kalla í gagnagrunninn, eða
hvað svo sem það var sem við ætluðum að nota
þessar breytur í.</p>
<pre>$skra = $aUppl[0] <font color=“#006600”>// = "korkar.php"</font></pre>
<pre>$sMonitor = $aUppl[1]<font color=“#006600”> // = viewpost</font></pre>
<pre>$iPostID = $aUppl[2]<font color=“#006600”> // = 309386</font></pre>
<pre>$iBoardID = $aUppl[3]<font color=“#006600”> // = 109</font></pre>
<p><br>
Gallinn við þessa aðferð er að ekki allar leitarvélar
indexa url sem hefur punkt inn í sér miðju, og líta
á það sem bilað url. <br>
En ekki allar þó, t.d google indexar svona url. Kosturinn er sá
að maður þarf ekki að hafa neina stjórn yfir vefþjóninum,
þannig að þetta er góð leið fyrir þá
sem geyma síðurnar sínar einhverstaðar út í
bæ.</p>
<p><b>Aðferð 2 - .htaccess Villuboð</b><br>
Þessi aðferð notar .htaccess skrá, þeir sem eru ekki
kunnugir .htaccess skrám, þá eru það skrár
sem eru notaðar til þess að stýra aðgangi að ákveðnum
möppum og fleira. Betra er auðvitað að gera það í
apache configinu en ekki allir hafa aðgang að því. Adminar
geta breytt réttindum notenda til þess að gera .htaccess skrár,
en það er sjaldan. Ef þetta virðist ekki virka, hafðu
þá samband við þjónustuaðilann þinn.<br>
.htaccess stjórnar því sem skeður í þeim
folder sem skráin er í.</p>
<p>Við ætlum að nota möguleika .htaccess til þess að
sjá um villumeldingar. (Þessa aðferð má sem sagt
líka nota til þess að láta apache búa til custom
villumeldingar bara fyrir þig)<br>
Við setjum þessa línu í .htaccess (Skráin er
yfirleitt ekki til, þannig að þið bara búið hana
til)</p>
<pre>ErrorDocument 404 /stjorn.php</pre>
<p>Þetta þýðir semsagt, að ef apache ætlar að
koma með 404 villu, þá í staðinn keyrir hann upp
stjorn.php. En athugið bara í þeim folder sem .htaccess skráin
er í.</p>
<p>Nú búum við til skrá sem heitir stjorn.php og setjum
hana í sömu möppu og .htaccess.</p>
<p>Það fyrsta sem við þurfum að gera við hana, er
að senda nýjan HTTP header, þar sem apache heldur ennþá
að þetta sé villusíða.<br>
Bætið þessu við stjorn.php í fyrstu línuna.<br>
</p>
<pre>header("HTTP/1.1 200 OK");</pre>
<p>Þegar við keyrum svo http://www.hugi.is/vefsidugerd/korkar/viewpost/309386/109<br>
Þá notum við aftur "look back" featureið í
apache. Hann finnur ekki möppu sem heitir 109, 309386, viewpost né
korkar, sem sagt engin keyranleg skrá þarna. Hann generatar 404
villu, en í staðinn fyrir að koma með villuna þá
keyrir hann stjorn.php.</p>
<p>Nú getum við samt ekki notað $PATH_INFO heldur verðum að
nota $REQUEST_URI sem skilar öllu eftir domain nafið í urlinu.</p>
<p>En einn galli, við verðum að finna út hvað eru margar
breytur sem er verið að senda.</p>
<p>Þannig að stjorn.php myndi eftirvill líta einhvernveginn svona
út.</p>
<pre>$aUppl = explode("/",$REQUEST_URI);</pre>
<p>Takið eftir vegna staðsetningar ‘/’ þá eru 5 stök
í þessu fylki. Fyrsta stakið er autt því það
inniheldur upplýsingarnar á undan fyrsta ‘/’.</p>
<p>Nú ætlum við að checka hvað eru mörg stök
í fylkinu. Til þess notum við count()<br>
</p>
<pre>$iFjoldi = count($aUppl) <font color=“#006600”>// Sem skilar 5</font></pre>
<p>Gefum okkur að .htaccess og stjorn.php sé á rótinni.</p>
<p>Svo bara checkum við hvar við erum t.d með if</p>
<pre>if($iFjoldi == 2)
{
switch ($aUppl[1])
{
case "vefsidugerd":
include("vefsidugerd/index.php");
break;
case "starwars":
include("starwars/index.php");
break;
case "forritun":
include("forritun/index.php");
break;
}
}
else if(($iFjodli == 3) && ($aUppl[1] == "vefsidugerd"))
{
switch ($aUppl[2])
{
case "korkar":
include("vefsidugerd/korkar.php");
break;
case "greinar":
include("vefsidugerd/greinar.php");
break;
case "bigboxes":
include("vefsidugerd/bigboxes.php");
break;
}
}
</pre>
<br>
og svo framvegis…
<p>Það er s.s fullt að leiðum til þess að gera þetta,
þið bara gerið eins og ykkur sýnist. Þetta er kannski
líka ekki besta leiðin þegar um er að ræða jafn
stóra síðu og huga.</p>
<p>Gallinn við þessa aðferð er að apache í rauninni
sér hverja síðu sem er hlaðið sem villumeldingu. Þannig
fjúka error loggarnir út í veður og vind. Þið
bara ákveðið hvort er mikilvægara, leitarvélar eða
error loggar. :)</p>
<p><br>
<b>Aðferð 3 - .htaccess þröngvun.</b><br>
Eins og þið sáuð í síðasta dæmi,
þá er svolítið erfitt að gera if-switch loopu fyrir
stórar síður, s.s huga. En það er ein leið í
viðbót, sem er eiginlega blanda af hinum tveimur. Hún notar
aðferð sem þröngvar apache til þess að lesa skrá
sem hefur enga endingu sem t.d php.<br>
<br>
Skoðum þetta url aftur: http://www.hugi.is/vefsidugerd/korkar/viewpost/309386/109.
Ef við viljum að hún lesi þetta sem korkar.php þá
bara setjum við .htaccess skrá í vefsidugerdar möppuna
sem inniheldur þennan texta:</p>
<pre><Files korkar>
ForceType application/x-httpd-php
</Files></pre>
<p>Vola, hún les korkar sem php. Og nú getum við bara notað
$PATH_INFO eins og í fyrsta dæminu.</p>
<p></p>
<p></p>
<p><br>
<b>Aðferð 4- apache þröngvun.</b><br>
Þetta er í rauninni það sama og aðferð 3, nema
hér er apache cofiginu breytt í staðinn fyrir að nota
.htaccess.</p>
<p>Þessu er þá bætt við í configinn.</p>
<pre><Location /vefsidugerd/korkar><br> ForceType application/x-httpd-php <br></Location>
</pre>
Þá ættu allir að geta gert leitarvélavinaleg url fyrir
sínar síður. Ég verð að viðurkenna að
ég testaði ekki kóðann. Þannig að endilega látiði
mig vita ef þið finnið villur eða betri aðferðir.
*————————-*