<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vaj.no &#187; mod_rewrite</title>
	<atom:link href="http://vaj.no/tag/mod_rewrite/feed/" rel="self" type="application/rss+xml" />
	<link>http://vaj.no</link>
	<description>Vegard A. Johansens personlige blogg.</description>
	<lastBuildDate>Tue, 06 Dec 2011 18:51:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Nye URL-er</title>
		<link>http://vaj.no/2004/05/nye-url-er/</link>
		<comments>http://vaj.no/2004/05/nye-url-er/#comments</comments>
		<pubDate>Fri, 07 May 2004 02:06:44 +0000</pubDate>
		<dc:creator>Vegard</dc:creator>
				<category><![CDATA[Web og webutvikling]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[pagerank]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://vaj.no/wp/?p=140</guid>
		<description><![CDATA[Jeg har fått nye fine URL-er, og hvordan bruke Movable Type til å generere en .htaccess-fil.]]></description>
			<content:encoded><![CDATA[<p>Jeg har tidligere skrevet om <a href="http://vgrd.dk/arkiv/2004/03/god_url/">gode, fremtidssikre og meningsfulle URL-er</a>, og hvordan jeg brukte Movable Type til å sette det opp på et annet websted. Der skrev jeg også nesten alt om hvorfor og hvordan jeg gjorde det på det webstedet, så jeg går ikke så mye inn på det.</p>
<p>Likevel, jeg har valgt en litt annen løsning her, som også krever Brad Choates sin <a href="http://bradchoate.com/weblog/2002/07/08/mtifempty">MTIfEmpty-plugin</a>. Det jeg ville var at URL til innlegg skal genereres utifra dato og innleggstittel, <em>eller</em> etter innleggskeyword, hvis eksempelvis tittelen var for lang eller dum til å bli URL. </p>
<p>For å få URl-ene til å bli dette, altså tittel eller keyword, skriver man følgende under weblog config &rarr; archiving &rarr; individual:</p>
<blockquote>
<p>
<code class="alt">&lt;$MTArchiveDate format="%Y/%m"$&gt;/&lt;MTIfEmpty var="EntryKeywords"&gt;&lt;$MTEntryTitle dirify="1"$&gt;&lt;/MTIfEmpty&gt;&lt;MTIfNotEmpty var="EntryKeywords"&gt;&lt;$MTEntryKeywords dirify="1"$&gt;&lt;/MTIfNotEmpty&gt;</code><code class="url">/index.php</code></p>
</blockquote>
<p>Som genererer en URL à-la:</p>
<blockquote>
<p><code class="url">vgrd.dk/arkiv/2004/05/nye_urler/</code></p>
</blockquote>
<p>Videre for månedsarkiv skriver man:</p>
<blockquote>
<p>
<code class="alt">&lt;$MTArchiveDate format="%Y/%m"$&gt;</code><code class="url">/index.php</code></p>
</blockquote>
<p>Som gir URL-er som:</p>
<blockquote>
<p><code class="url">vgrd.dk/arkiv/2004/05/</code></p>
</blockquote>
<p>Og til slutt for kategorier skriver man:</p>
<blockquote>
<p><code class="alt">&lt;MTCategoryLabel dirify="1"&gt;</code><code class="url">/index.php</code></p>
</blockquote>
<p>Som gir URL-er som:</p>
<blockquote>
<p><code class="url">vgrd.dk/arkiv/web_og_webutvikling/</code></p>
</blockquote>
<p>Så er det i grunn bare å rebuilde, og du har helt nye URL-er! Men problemet hvis man ikke setter dette opp i starten er at man får en mengde brutte linker både internt, fra andre og fra Google. Og det er ikke bra. Det løses ganske lett med <a href="http://wsabstract.com/howto/htaccess7.shtml">redirects i en .htaccess-fil</a>, men jeg har ikke orket å implementere løsningen her for jeg trodde jeg måtte skrive hele redirect-fila manuelt. </p>
<p>Men, det var før jeg fant en <a href="http://www.andybudd.com/archives/2004/03/blog_updates_part_2/">løsning hos Any Budd</a> som er like enkel som den er genial! Andy forklarer alt som trenges å forklares, men jeg tar noe av det på nytt her. Det geniale er at man kan bruke Movable Type til å generere innholdet som skal i redirect-fila. Det er så simplelt som å lage en ny main index, og klippe følgende inn:</p>
<blockquote>
<p><code class="alt">&lt;MTEntries sort_order="ascend"&gt;</code> Redirect permanent <code class="url">/arkiv/</code><code class="alt">&lt;$MTEntryID pad="1"$&gt;</code><code class="url">.php http://vgrd.dk/arkiv/</code><code class="alt">&lt;$MTArchiveDate format="%Y/%m"$&gt;/&lt;MTIfEmpty var="EntryKeywords"&gt;&lt;$MTEntryTitle dirify="1"$&gt;&lt;/MTIfEmpty&gt;&lt;MTIfNotEmpty var="EntryKeywords"&gt;&lt;$MTEntryKeywords dirify="1"$&gt;&lt;/MTIfNotEmpty&gt;</code><code> &lt;br /&gt;</code><code class="alt">&lt;/MTEntries&gt;</code></p>
</blockquote>
<p>Rebuild denne, og du får en lang liste over dine innlegg, som ser ca sånn her ut:</p>
<blockquote>
<p> Redirect permanent /arkiv/000178.php http://vgrd.dk/arkiv/2004/05/sommertur </p>
</blockquote>
<p>..som er akkurat det som skal stå i .htaccess-fila! For kategorier og måneder skrev jeg det inn manuelt. </p>
<p>Fordelen med å ha URL-er som dette er egentlig ganske mange. For det første er ikke standard-URL-ene til Movable Type gode. For det andre gjør det min statistikk mye mer meningsfull å se på, da jeg med en gang ser hvilke innlegg som blir truffet fra søkemotorer og den slags. Og til slutt så er det en god liten søkemaskinoptimeringsteknikk, da Google også vekter URL-er til sider som en del i pagerank-matrisen. Det er lettest med et eksempel, søker du på persille gir det øverste her betraktelig høyere plassering enn det nederste:</p>
<blockquote>
<p><code class="url">http://www.persille.no/<br />
http://persille.domene.no/<br />
http://www.domene.no/persille/ <br />
http://www.domene.no/katalog/persille.html</code>, og til slutt <br />
<code class="url">http://www.domene.no/katalog/000123.html</code> (hvor &#8220;persille&#8221; bare er en del av innholdet.) </p>
</blockquote>
<p>Og ikke minst slipper jeg at dette skal gnage på meg fremover!</p>
]]></content:encoded>
			<wfw:commentRss>http://vaj.no/2004/05/nye-url-er/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Brugeroplevelse.dk, del 2: Gode URL-er med Movable Type</title>
		<link>http://vaj.no/2004/03/brugeroplevelsedk-del-2-gode-url-er-med-movable-type/</link>
		<comments>http://vaj.no/2004/03/brugeroplevelsedk-del-2-gode-url-er-med-movable-type/#comments</comments>
		<pubDate>Mon, 29 Mar 2004 12:49:36 +0000</pubDate>
		<dc:creator>Vegard</dc:creator>
				<category><![CDATA[Web og webutvikling]]></category>
		<category><![CDATA[Grey Digital]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Movable Type]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://vaj.no/wp/?p=132</guid>
		<description><![CDATA[Hva er en god URL, og hvordan du kan sette opp Movable Type til å generere gode URL-er.]]></description>
			<content:encoded><![CDATA[<p>Jeg var ansvarlig for stort sett alt annet enn grafisk design og innhold på <a href="http://www.brugeroplevelse.dk/">brugeroplevelse.dk</a>, noe som gjorde at jeg fikk bestemme bl.a. hva vi skulle bruke som CMS. Så jeg bestemte <a href="http://www.movabletype.org/">Movable Type</a>, da det er veldig billig og bra nok i massevis for prosjekter av denne størelsen. Videre bestemte jeg at vi skulle ha meningsfulle og fremtidsikrede URL-er. For det er lurt.</p>
<p>Med meningsfulle og fremtidssikrede URL-er mener jeg:</p>
<ul>
<li>En URL som er fremtidsikret er en URL som sier noe om <em>plassering</em>, ikke om <em>teknologi</em> bak. Derfor ingen filnavn som <code class="url">index.php/.asp/.html</code> etter adressene. På den måten kan man i fremtiden skifte bakenforliggende teknologi uten å skifte adressen. </li>
<li>I tillegg skal URL-ene være unike, så man ikke &#8220;går tom&#8221; en gang i fremtiden. Dette løses lett ved å ha publiseringsdatoen med i URL-en. </li>
<li>URL-ene skal gi mening når man leser de, og vise hvor man er i arkitekturen. Eksempelvis ser URL for de enkelte styrkeprøver slik ut: <code class="url">.../styrkeproven/2003/08/07/websted1_websted2/</code> &#8211; hvor websted1 og 2 er de webstedene som møttes i den aktuelle styrkeprøven. Videre er <code class="url">2003/08/07</code> datoen den aktuelle styrkeprøven ble publisert på.</li>
<li>URL-ene skal i størst mulig grad være hackbare. Dvs. at man kan fjerne eksempelvis <code class="url">/07/websted1_websted2/</code> fra URL-en over så den gjenstående URL er <code class="url">.../styrkeproven/2003/08/</code> &#8211; og så få en liste over styrkeprøver fra august 2003. Dette bør fungere på alle nivå nedover, men her fungerer det bare ned til måneder. </li>
</ul>
<p><strong>Merk at</strong> Movable Type sine standard-URL-er for innlegg hverken er gode eller fremtidssikrede, av flere grunner. For det første er default adresse for et innlegg av typen <code class="url">000123.html</code>. Dette er Movable Type sine interne id-er i databasen for innlegg. En ting er at de ikke gir mening (sier noe om innholdet) eller er fremtidssikret (de bruker filnavn avhengig av teknologi). En helt annen og mer graverende ting er at de ikke er konsistente. Hvis man skifter server eller må bygge opp bloggen / webstedet på nytt vil alle innleggene få tildelt nye id-er, og linker vil derfor bli brutt.</p>
<p>Ikke bra, men lett å rette på. </p>
<h2>Litt generelt om bloggoppsettet</h2>
<p>Jeg har skrevet et <a href="/arkiv/000170.php">eget innlegg om hele bloggoppsettet</a>, men den bloggen som styrer <a href="http://www.brugeroplevelse.dk/styrkeproven/">styrkeprøveseksjonen</a> er en vanlig blogg på alle måter, med forside, arkiv, og permalinker. </p>
<p>Det er likevel verd å merke seg at jeg har støttet meg mye til Keywords-feltet under blogginnlegg (new / edit entry) for å generere URL-er, og på kategorier for å skille sider fra hverandre. Mer om dette kommer. </p>
<p>For å få frem keywords-feltet må man velge new / edit entry, gå helt nederst og velge &#8220;Customize the display of this page&#8221;, velge custom og klikke av Keywords-feltet sammen med de andre du vil ha med. Jeg sier dette fordi jeg har lett og lett etter dette Keywords-feltet jeg har lest om uten å finne det noen plasser. Men det er kanskje bare meg som er svimete.</p>
<h2>Styrkeprøvebloggen</h2>
<p>Styrkeprøvebloggen er som sagt en vanlig blogg på alle mulige måter, med en forside, et arkiv, permalinker etc. I tillegg har den én side som ikke består av blogginnhold (blogginnhold er bare de enkelte styrkeprøver).</p>
<p>Å lage meningsfylte URL-er for denne bloggen er rimelig enkelt. Under Weblog Config &rarr; Archiving skriver du for Individual (permalink) under Archive File Template:</p>
<blockquote>
<p><code class="alt">&lt;$MTEntryDate format="%Y/%m/%d"$>/&lt;$MTEntryKeywords$&gt;</code><code class="url">/index.php</code><br />
Som genererer en URL med følgende oppsett: <br />
<code class="url">../år/mnd/dag/keyword/index.php</code></p>
</blockquote>
<p>Og for Monthly:</p>
<blockquote>
<p><code class="alt">&lt;$MTEntryDate format="%Y/%m/"$&gt;</code><code class="url">index.php</code><br />
Som genererer en URL med følgende oppsett: <br />
<code class="url">../år/mnd/index.php</code></p>
</blockquote>
<p>Verre er det (nesten) ikke. En ting man må huske på her er å skrive det man vil skal være URL-en til innlegget i Keywords-feltet for hvert innlegg. Det er altså litt merarbeid. Grunnet det bruker noen heller tittelen som URL, ved å sette inn <code class="alt">&lt;$MTEntryTitle dirify="1"$&gt;</code> hvor jeg har satt inn <code class="alt">&lt;$MTEntryKeywords$&gt;</code> i oppsettet over. Dette er litt mindre arbeid, men fører til at linken brytes hvis man må endre på tittelen. Og ikke minst kan det føre til svært, svært lange URL-er. Og du har mer kontroll ved å bruke keywords. </p>
<p>Så siste ting, jeg ville som sagt ikke ha filnavnet index.php med i URL-en. Dette kan løses på mange måter. Kjører webserveren din Apache kan du eksempelvis bruke <a href="http://httpd.apache.org/docs/mod/mod_rewrite.html">mod_rewrite</a> i .htaccess. Men dette ble for avansert for mitt lille hode. Jeg fant heller en plugin til Movable Type som gjør det samme <em>nesten</em> like godt, nemlig Brad Choate sin <a href="http://bradchoate.com/weblog/2002/07/27/regex-plugin">Regex Plugin</a>. Installer denne som Brad sier i tekstfila som medfølger, og sett så følgede linje inn alle plasser hvor du linker til innlegg ved hjelp av <code class="alt"><$MTEntryPermaLink$></code> eller lignende (i praksis alle malene dine):</p>
<blockquote>
<p><code class="alt">&lt;MTAddRegex name="stripFile"&gt;s|/index\.[^/]+$|/|g&lt;/MTAddRegex&gt;</code></p>
</blockquote>
<p>Sett dette langt opp i dokumentet, så regelen gjelder for hele dokumentet. Denne må så aktiveres hver gang man linker til en URL hvor man vil fjerne filnavnet på følgende måte:</p>
<blockquote>
<p><code>&lt;a href="</code><code class="alt">&lt;$MTEntryLink regex="stripFile"$&gt;</code><code>"&gt;</code>Innleggstittel<code>&lt;/a&gt;</code>;</p>
<p><code>&lt;a href="</code><code class="alt">&lt;$MTArchiveLink regex="stripFile"$&gt;</code><code>"&gt;</code>Månedsarkiv<code>&lt;/a&gt;</code>
</p>
</blockquote>
<p>Dette gir innlegg med adresser som: </p>
<blockquote>
<p><code class="url">../år/mnd/dag/keyword/</code></p>
</blockquote>
<p>Dette er det samme som over, men uten et filnavn som sier noe om teknologien som er brukt. </p>
<p>Så var det ett innlegg som ikke hadde noe med bloggen å gjøre, nemlig den siden som handler <a href="http://www.brugeroplevelse.dk/styrkeproven/om/">om styrkeprøven</a>. For at denne ikke skal bli listet opp i arkivet var det nødvendig å legge alle styrkeprøver i en egen kategori, nemlig &#8220;Styrkeprøven&#8221;, og det siste innlegget i en annen kategori, nemlig &#8220;om_styrke&#8221;. I main archive index trakk jeg så ut alle innlegg i kategorien &#8220;styrkeprøven&#8221;, og lagde en egen index som trakk ut det ene innlegget i &#8220;om_styrke&#8221;. Mer om hvordan man gjør dette finnes i neste innlegg om <a href="/arkiv/000170.php">det generelle oppsettet</a>.</p>
<p>Voilà! Du har satt opp Movable Type med gode, fremtidssikrede URL-er. Eksempelvis har den styrkeprøven skrevet 1. mars 2004, som omhandler webstedene til Dell og Zitech, følgende URL:</p>
<p><code><a href="http://www.brugeroplevelse.dk/styrkeproven/2004/03/01/dell_zitech/">http://www.brugeroplevelse.dk/styrkeproven/2004/03/01/dell_zitech/</a></code></p>
<p>I bloggoppsettet er både site path og archive path satt til det samme, nemlig <code class="url">/styrkeproven/</code>, <code class="url">/2004/03/01/</code> blir generert av publiseringsdatoen i Movable Type, og <code class="url">/dell_zitech/</code> blir generert av at jeg har skrevet dell_zitech som keyword til dette innlegget. </p>
<p>Skal man sette opp en ny blogg med Movable Type er det definitivt verd å ta seg fem minutter med å sette ting opp på denne, eller tilsvarende, måte. Ellers får du et lite helvete hvis du skal rette det siden (jeg har eksempelvis lyst til å gjøre det her på denne siden, men orker ikke helt tanken på å videresende ~150 sider).</p>
<p>Mer om dette, og ting jeg hadde hjelp av:</p>
<ul>
<li><a href="http://mar.anomy.net/entry/2003/06/22/17.15.00/">Howto: Future-proof URLs in Movable Type</a> av Már Örlygsson (ypperlig!)</li>
<li><a href="http://diveintomark.org/archives/2003/08/15/slugs">Cruft Free URLs in Movable Type</a> av Mark Pilgim (også om hvordan man kan bruke keyword <em>eller</em> tittel til å generere URL. En smartere løsning for de fleste blogger vil jeg tro, men ikke nødvendig for dette prosjektet).</li>
<li><a href="http://blogg.huftis.org/arkiv/2003/07/04/83/">Kanoniske nettadresser</a> av Karl Ove Hufthammer (om hvorfor man bør ha gode URL-er).</li>
</ul>
<p>Dette innlegget ble så langt at jeg valgte å lage det til to, neste innlegg omhandler det <a href="/arkiv/000170.php">generelle oppsett</a> av de forskjellige bloggene som styrer www.brugeroplevelse.dk</p>
]]></content:encoded>
			<wfw:commentRss>http://vaj.no/2004/03/brugeroplevelsedk-del-2-gode-url-er-med-movable-type/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

