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