<?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>PHPKuh.de &#187; Struktur</title>
	<atom:link href="http://phpkuh.de/kategorie/struktur/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpkuh.de</link>
	<description>Just a man, a computer and his PHP</description>
	<lastBuildDate>Thu, 01 May 2008 23:18:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>mod_rewrite: alles einzeln in .htaccess?</title>
		<link>http://phpkuh.de/mod_rewrite-alles-einzeln-in-htaccess/</link>
		<comments>http://phpkuh.de/mod_rewrite-alles-einzeln-in-htaccess/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 16:58:23 +0000</pubDate>
		<dc:creator>Chefkoch</dc:creator>
				<category><![CDATA[Struktur]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://phpkuh.de/mod_rewrite-alles-einzeln-in-htaccess/</guid>
		<description><![CDATA[Oft wird in PHP-Applikationen mod_rewrite verwendet, um bestimmte GET-Variablen in die URL zu verpacken und nicht unsch&#246;n hinter dem Fragezeichen herumoxidieren zu lassen. Gr&#252;nde daf&#252;r sind in der Regel eine h&#246;here Lesbarkeit f&#252;r den Menschen und eine historisch bedingte bessere Suchmaschinen-Eignung, da Google (und die anderen SuMas) noch vor einigen Jahren die per GET-Methode &#252;bergebenen [...]]]></description>
			<content:encoded><![CDATA[<p>Oft wird in PHP-Applikationen mod_rewrite verwendet, um bestimmte GET-Variablen in die URL zu verpacken und nicht unsch&#246;n hinter dem Fragezeichen herumoxidieren zu lassen. Gr&#252;nde daf&#252;r sind in der Regel eine h&#246;here Lesbarkeit f&#252;r den Menschen und eine historisch bedingte bessere Suchmaschinen-Eignung, da Google (und die anderen SuMas) noch vor einigen Jahren die per GET-Methode &#252;bergebenen Parameter ignorierten oder maximal ein bis zwei indizierten.<span id="more-10"></span></p>
<p>Aus URLs wie z.B. der folgenden:</p>
<p><code>http://www.example.com/index.php?action=read&amp;id=2&amp;page=4</code></p>
<p>wurde also z.B.:</p>
<p><code>http://www.example.com/read/2/page/4</code></p>
<p>Die Rewrite-Regeln daf&#252;r k&#246;nnten z.B. so aussehen:</p>
<p><code>RewriteRule ^read/(\d+?)/page/(\d+?)/?$ index.php?action=read&amp;id=$1&amp;page=$2 [L]<br />
RewriteRule ^read/(\d+?)/?$ index.php?action=read&amp;id=$1 [L]</code></p>
<p>Diese Regeln verschwinden dann meist in der .htaccess-Datei und es werden nach und nach f&#252;r jede Action ein oder mehrere Zeilen angelegt. Das Problem dabei ist, dass diese Strategie oft zum .htaccess-Wildwuchs f&#252;hrt, was die Durchsicht (besonders f&#252;r externe Programmierer) extrem erschwert. Seitenweise Rewrite-Anweisungen sind nicht besonders &#252;bersichtlich, insbesondere wenn es darum geht, Sicherheitsl&#252;cken oder Bugs zu finden.</p>
<p>Viel besser gef&#228;llt mir der Ansatz, einfach ALLE relevanten Aufrufe an die index.php (oder eine andere) weiterzuleiten (dem sogenannten Dispatcher), und dann innerhalb der PHP-Applikation zu entscheiden, was zu tun sei. So ist die Logik komplett in <em>einer</em> Programmiersprache vorhanden und nicht in zwei unterschiedlichen Schichten.</p>
<p>Diese meist als Dispatcher bezeichnete Verfahrensweise hat sich f&#252;r mich in der Vergangenheit mehrfach bew&#228;hrt. Das setzt nat&#252;rlich voraus, dass man sich einmal &#252;ber das URL-Parsing innerhalb von PHP Gedanken gemacht hat. Zu Beginn der Skript-Abarbeitung sollte also die URL in ihre Bestandteile zerlegt werden, und evtl. die G&#252;ltigkeit gepr&#252;ft werden. Wenn das Ganze noch in ein eine kleine Klasse verpackt ist, dann kann jede Folge-Funktion komfortabel auf die ermittelten Werte zur&#252;ckgreifen (was nat&#252;rlich auch quick&#8217;n'dirty mit einer globalen Variable funktioniert).</p>
<p>Laut Wikipedia ist ein Dispatcher folgendes:</p>
<blockquote><p>Ein <strong>Dispatcher</strong> (engl. to dispatch = etwas erledigen, abschicken) ist ein Einsatzleiter, Koordinator, Zuteiler. W&#246;rtlich „Schnell-Erlediger“.</p></blockquote>
<p>Immer mehr Softwareprojekte verfahren auf diese Weise (z.B. auch Wordpress) und vereinfachen damit die Wartung des Systems erheblich, da nun nicht mehr an mindenstens 2 Stellen gesucht und erweitert werden muss. So ist es auch nicht mehr notwendig, z.B. aufgrund neu angelegter Kategorien die .htaccess-Datei mit neuen Regeln zu best&#252;cken, da die Entscheidung, ob ein Aufruf g&#252;ltig ist oder nicht, nun sowieso in der Anwendung selbst getroffen wird.</p>
<p>Performance-Nachteile kann ich nicht erkennen, denn auch das Parsing der RewriteRules in der .htaccess ben&#246;tigt Zeit und dort kann man ebenfalls Einiges zu Lasten der Abarbeitungs-Geschwindigkeit verkehrt machen.</p>
<p>Deine Meinung interessiert mich. Siehst Du begr&#252;ndete Vorteile der Variante, alles einzeln in die .htaccess-Datei zu schreiben? Ich bin gespannt.</p>
]]></content:encoded>
			<wfw:commentRss>http://phpkuh.de/mod_rewrite-alles-einzeln-in-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

