“Va? Ska det inte vara Batman?”, kanske ni tycker. Nä, inte i det här fallet, för det ställde till en massa skit i en dryg halvtimme för att komma undefund med varför min rewrite fungerade konstigt.
Jag aktiverade mod_rewrite i WAMP och gjorde lite tester utifrån ett par tutorials och allt verkade fungera kanonfint. Fram tills jag själv ville experimentera och stötte på ett problem med filnamn och hur rewrite-stödet fungerar per default.
Ett enkelt exempel på hur en rewrite kan se ut i en .htaccess-fil
RewriteEngine on
RewriteRule ^product/([0-9][0-9])/$ /productinfo.php?id=$1 [R]
Rad ett talar om att vi vill använda rewritemotorn. Rad två innehåller en beskrivning för hur en specifik typ av URL ska hanteras. I detta fall kommer en URL som ser ut tex “http://www.host.com/product/22/” att redirectas till “http://www.host.com/productinfo.php?id=22”.
Detta fungerade kanonfint, utan problem. Men så tänkte jag att man skulle vilja göra filnamnet lite mer konsekvent med URL:en. Så jag döper med andra ord om “productinfo.php” till “product.php”. Då tycker Rewritemotorn att den ska öppna filen “product.php” oavsett hur många efterföljande paramterar(/slashar) jag än lägger på. För så fungerar minsann Rewrite; om det finns en fil med samma namn som det du försöker matcha (“product”(.php) i det här fallet), så kommer Apache att leverera dig filen med det namnet och göra det förbryllande. Kort sagt, se till att inte ha samma filnamn på det som ska matchas och det som ska rewritas, så slipper man huvudvärk ett tag.