<?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>Stetix &#187; perl</title>
	<atom:link href="http://stetix.de/tag/perl/feed" rel="self" type="application/rss+xml" />
	<link>http://stetix.de</link>
	<description>Gedanken über Web-Development, Webdesign, Technik, Handys, Musik, Vinyl, Gadgeds und mehr..</description>
	<lastBuildDate>Wed, 31 Aug 2011 14:16:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>301 Weiterleitung einer Website per mod-rewrite</title>
		<link>http://stetix.de/301-weiterleitung-einer-website-per-mod-rewrite.html</link>
		<comments>http://stetix.de/301-weiterleitung-einer-website-per-mod-rewrite.html#comments</comments>
		<pubDate>Wed, 25 Feb 2009 19:12:49 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=191</guid>
		<description><![CDATA[Wenn sich die Domain oder Url einer Website geändert hat, empfiehlt sich eine Weiterleitung auf die neue Adresse mit dem HTTP-Statuscode 301 (Moved Permanently). Der Code 301 deshalb, damit auch Suchmaschinen wie Google wissen, das sich die Adresse für immer geändert hat und nur die neue Url verwendet werden soll. Google berücksichtigt hier auch den [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Wenn sich die Domain oder Url einer Website geändert hat, empfiehlt sich eine Weiterleitung auf die neue Adresse mit dem <a href="http://de.wikipedia.org/wiki/HTTP-Statuscode">HTTP-Statuscode</a> 301 (Moved Permanently). Der Code 301 deshalb, damit auch Suchmaschinen wie <a href="http://www.google.de">Google</a> wissen, das sich die Adresse für immer geändert hat und nur die neue Url verwendet werden soll. Google berücksichtigt hier auch den Pagerank und ordnet diesen der neuen URL zu.</p>
<h3>Die Technik</h3>
<p>Technisch gesehen werden vom Webserver im HTTP 2 Zeilen an den Client (Nutzer mit Browser, Suchmaschine) gesendet. Eine mit dem Statscode und eine mit dem Ziel der Weiterleitung:</p>
<p><code>HTTP/1.1 301 Moved Permanently<br />
Location: http://www.neue-url.de/pfad/zur/datei.htm<br />
</code></p>
<p>Eine HTTP-Sitzung per Telnet auf Port 80 sieht dann zum Beispiel so aus:</p>
<p><code># telnet alte-domain.de 80<br />
Trying 12.34.56.78...<br />
Connected to alte-domain.de.<br />
Escape character is '^]'.<br />
GET / HTTP/1.1<br />
Host: alte-domain.de<br />
<br />
HTTP/1.1 301 Moved Permanently<br />
Date: Thu, 25 Feb 2009 20:06:55 GMT<br />
Server: Apache/2.2.11<br />
Location: http://neue-domain.de/<br />
Content-Length: 225<br />
Connection: close<br />
Content-Type: text/html; charset=iso-8859-1<br />
<br />
&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"&gt;<br />
&lt;html&gt;&lt;head&gt;<br />
&lt;title&gt;301 Moved Permanently&lt;/title&gt;<br />
&lt;/head&gt;&lt;body&gt;<br />
&lt;h1&gt;Moved Permanently&lt;/h1&gt;<br />
&lt;p&gt;The document has moved &lt;a href="http://neue-domain.de/"&gt;here&lt;/a&gt;.&lt;/p&gt;<br />
&lt;/body&gt;&lt;/html&gt;<br />
Connection closed by foreign host.<br />
</code></p>
<h3>mod_rewrite &#8211; die Lösung</h3>
<p>Um dies mit Hilfe des Webservers Apache zu lösen, hilft uns das Modul Rewrite, kurz <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a>. Hat man Zugriff auf die Konfigurationsdatei des Webservers, kann man die Rewrite-Weiterleitung im <a href="http://httpd.apache.org/docs/2.2/mod/core.html#virtualhost">VirtualHost</a>, in der <a href="http://httpd.apache.org/docs/2.2/mod/core.html#directory">Directory</a>- oder <a href="http://httpd.apache.org/docs/2.2/mod/core.html#location">Location</a>-Direktive vornehmen. Anonsten erstellt man eine <a href="http://httpd.apache.org/docs/2.2/howto/htaccess.html">.htaccess</a>-Datei und nimmt die Konfiguration hier vor.<br />
Um mod_rewrite zu aktivieren, benötigen wir folgende zwei Zeilen:</p>
<p><code>RewriteEngine on<br />
RewriteBase /<br />
</code><br />
<span id="more-191"></span>Die erste Zeile aktiviert das Modul und die zweite setzt den Basis-Pfad, für den die folgende Rewrite-Konfiguration dienen soll. Möchten wir beispielsweise nur für das Verzeichnis <em>/homepage/blog/</em> eine Weiterleitung erstellen, benötigen wir folgende Einstellung:</p>
<p><code>RewriteEngine on<br />
RewriteBase /homepage/blog/<br />
</code></p>
<p>Als nächstes definieren wir unsere Regel für die Weiterleitung. Diese beinhaltet das Suchmuster und den Ersatz, d.h. die Original-Url und die neue Adresse der URL-Weiterleitung. Das tolle ist, das hier <a href="http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck">Reguläre Ausdrücke</a> verwendet werden können. Die Syntax ist wie folgt:</p>
<p><code>RewriteRule &lt;suchmuster&gt; &lt;ersatz&gt;<br />
</code></p>
<p>Eine Domain-Weiterleitung mit mod_rewrite würde zum Beispiel so aussehen:</p>
<p><code>RewriteRule ^(.*)$ http://www.neuedomain.de/$1 [R=301,L]<br />
</code></p>
<p>Eine Weiterleitung eines Verzeichnisses so:</p>
<p><code>RewriteRule ^homepage/blog(.*)$ http://www.neuedomain.de/homepage/blog$1 [R=301,L]<br />
</code></p>
<p>Das mit dem Modul Rewrite noch mehr Möglichkeiten z.B. dynamischer Weiterleitungen bestehen, verdeutlicht folgendes Beispiel:</p>
<p><code>RewriteRule ^([a-z\-]+)/([a-z\-]+)/(.*)$ http://www.neuedomain.de/$3?site=$1&amp;sub=$2 [R=301,L]<br />
</code></p>
<p>Jede Regel ist aber vorher gut zu durchdenken, da bei Fehlkonfiguration die Performance des Apache in Mitleidenschaft gezogen oder sogar zum Absturz, z.B. durch Endlosschleifen, gebracht werden kann. Mehr Informationen und viele Möglichkeiten mehr gibt es in der <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule">mod_rewrite Apache-Doku</a>.</p>
<h3>Andere Möglichkeiten einer Weiterleitung</h3>
<p>Ist mod_rewrite nicht installiert, oder keine Berechtigung zur Benutzung gegeben, müssen andere Lösungen her.</p>
<h4>Weiterleitung mit PHP</h4>
<p>Mit PHP könnte man oben beschriebene Weiterleitungen mit Hilfe der <a href="http://de.php.net/manual/de/function.header.php">header</a>-Funktion lösen.</p>
<pre name="code" class="php">&lt;?php
header('HTTP/1.1 301 Moved Permanently', true);
header('Location: http://www.neue-url.de/pfad/zur/datei.htm', true);
?&gt;</pre>
<h4>Weiterleitung mit Perl / CGI</h4>
<p>Auch mit Perl könnte man die Weiterleitung mit Hilfe eines Headers direkt per print lösen:</p>
<pre name="code" class="ruby">#!/usr/bin/perl

print "HTTP/1.1 301 Moved Permanently\n";
print "Location: http://www.neue-url.de/pfad/zur/datei.htm\n";</pre>
<h4>Weiterleitung mit Ruby</h4>
<p>In Ruby kann man dies zum Beispiel so realisieren:</p>
<pre name="code" class="ruby">#!/usr/bin/env ruby

require 'cgi'
cgi.header({'HTTP/1.1 301 Moved Permanently','Location'=&gt;'http://www.neue-url.de/pfad/zur/datei.htm'})</pre>
<h4>Clientseitig ohne 301-Status: Javascript</h4>
<p>Eine clientseitige Weiterleitung könnte mit Javascript realisiert werden. Nachteil ist hier, das bei deaktiviertem Javascript die Weiterleitung nicht funktioniert.</p>
<pre name="code" class="javascript">&lt;script type="text/javascript"&gt;
&lt;!--
window.location.replace("http://www.neue-url.de/pfad/zur/datei.htm");
// --&gt;
&lt;/script&gt;</pre>
<h4>Clientseitig ohne 301-Status: Weiterleitung per Meta-Tag</h4>
<p>Hierfür wird im Head Bereich des HTML-Codes ein Meta-Tag eingefügt, der durch Semikolon getrennt die Zeit angibt, die der Browser bis zur Weiterleitung warten soll und die URL des Ziels der Weiterleitung. Auch diese methode empfehle ich nicht, da dies wie auch Javascript Interpretationssache des Browsers ist, diesen tag zu beachten (Wobei alle Standard-Browser dies tun).</p>
<pre name="code" class="html">&lt;head&gt;
&lt;meta http-equiv="refresh" content="3; url=http://www.neue-url.de/pfad/zur/datei.htm"&gt;
&lt;!-- andere Tags im Header --&gt;
&lt;/head&gt;</pre>
<p>Meine Empfehlung: Immer mod-rewrite nutzen, da serverseitig, gut konfigurierbar und vielseitig einsetzbar. Sollte dies nicht vorhanden oder möglich sein, können die anderen genannten Möglichkeiten einer Weiterleitung (PHP oder andere serverseitige Script- bzw. Programmiersprache, Javascript, Meta-Tag &#8211; in der Reihenfolge) weiterhelfen.</p>
<p>Happy Redirecting!</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/301-weiterleitung-einer-website-per-mod-rewrite.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
