<?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; web development</title>
	<atom:link href="http://stetix.de/tag/web-development/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>Thu, 12 Apr 2012 20:35:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Crontab Tutorial und Syntax: Cronjobs unter Linux einrichten und verstehen</title>
		<link>http://stetix.de/cronjob-linux-tutorial-und-crontab-syntax.html</link>
		<comments>http://stetix.de/cronjob-linux-tutorial-und-crontab-syntax.html#comments</comments>
		<pubDate>Wed, 13 Jan 2010 15:05:03 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1174</guid>
		<description><![CDATA[Mit Hilfe von Cronjobs können auf Unix- und Linux-Systemen Vorgänge automatisert und zu einem bestimmten Zeitpunkt immer wiederkehrend ausgeführt werden. Diese Vorgänge können einzelne Befehle, Shell-Scripts, Programme, PHP- und sonstige Scriptsprachen-Scripts oder auch eine Anreihung von Linux-Befehlen sein. Beispielsweisse werden Backups, die täglich oder sogar stündlich geschehen sollen meist per Cronjob ausgeführt. Crontab Crontab wird [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/01/cronjob.jpg" alt="cronjob Crontab Tutorial und Syntax: Cronjobs unter Linux einrichten und verstehen" title="cronjob" width="300" height="199" class="alignright size-full wp-image-1309" />Mit Hilfe von Cronjobs können auf Unix- und Linux-Systemen Vorgänge automatisert und zu einem bestimmten Zeitpunkt immer wiederkehrend ausgeführt werden. Diese Vorgänge können einzelne Befehle, Shell-Scripts, Programme, PHP- und sonstige Scriptsprachen-Scripts oder auch eine Anreihung von Linux-Befehlen sein. Beispielsweisse werden Backups, die täglich oder sogar stündlich geschehen sollen meist per Cronjob ausgeführt.</p>
<p><span id="more-1174"></span></p>
<h3>Crontab</h3>
<p>Crontab wird die Tabelle genannt, in der die einzelnen Cronjobs definiert und konfiguriert werden. Die Tabelle enthält pro Zeile den Zeitpunkt und die Befehlsfolge, die ausgeführt werden soll. Der Begriff Crontab setzt sich aus dem griechischen Chronos (Zeit) und lateinischen Tabula (die Tafel, das Brett) zusammen. </p>
<p>Gleichzeitig ist crontab auch das Programm, mit dessen Hilfe man die Crontabs bearbeiten kann. Um die Contab zu bearbeiten, muß folgender Befehl eingegeben werden:</p>
<p><code>crontab -e</code></p>
<h3>Crontab Syntax</h3>
<p>Jeder Cronjob hat folgendes Format:</p>
<p><code>* * * * * auszuführender Befehl<br />
┬ ┬ ┬ ┬ ┬<br />
│ │ │ │ │<br />
│ │ │ │ └──── Wochentag (0-7, Sonntag ist 0 oder 7)<br />
│ │ │ └────── Monat (1-12)<br />
│ │ └──────── Tag (1-31)<br />
│ └────────── Stunde (0-23)<br />
└──────────── Minute (0-59)<br />
</code></p>
<p>Ein Stern * bedeutet Ausführung wird immer erfolgen, also zu jeder Minute, jeder Stunde, jedem Tag, jedem Monat oder jedem Wochentag. Um die einzelnen Stellen auseinander zu halten, hilft folgendes Diagram:</p>
<p><code><strong>1 2 3 4 5 Befehl</strong><br />
<br />
1 = Minute (0-59)<br />
2 = Stunde (0-23)<br />
3 = Tag (0-31)<br />
4 = Monat (1-12)<br />
5 = Wochentag (0-7, Sonntag ist 0 oder 7)<br />
Befehl = Der auszuführende Befehl.<br />
</code></p>
<p>Für die ersten fünf Stellen, also die Zeiwerte sind folgende Optionen zusätzlich möglich:</p>
<p>* = Ausführung immer (zu jeder&#8230;)<br />
*/n = Ausführung aller n<br />
n,x,y = Ausführung um/am n, x und y</p>
<h3>Cronjob Beispiele</h3>
<p>Um zum Beispiel jede Nacht um 5 Uhr morgens das Backup auszuführen, würde man den Cronjob folgendermaßen anlegen:</p>
<p><code>0 5 * * *      /usr/bin/backup.sh<br />
</code></p>
<p>Einen Sound alle 10 Minuten Abzuspielen könnte wie folgt aussehen:</p>
<p><code>*/10 * * * *      /usr/bin/play_sound.sh<br />
</code></p>
<p>Eine Erinnerungsmail um 8 und um 17 Uhr zu verschicken geht z.B. so:</p>
<p><code>0 8,17 * * *      /usr/bin/send_reminder_mail.sh<br />
</code></p>
<h3>Ausgabe der Cronjobs</h3>
<p>Die Ausgabe der Cronjobs wird standardmässig per Mail an den jeweiligen System-User der den Cronjob eingerichtet hat gesendet. Um dies zu unterdrücken, könnte man die Ausgabe in eine Datei umleiten oder mit Umleitung zu /dev/null komplett verwerfen:</p>
<p><strong>Cronjob-Ausgabe in Logfile umleiten</strong></p>
<p><code>0 8,17 * * *      /usr/bin/script.sh >>/var/log/cron/send_reminder_mail 2>&#038;1<br />
</code></p>
<p><strong>Cronjob-Ausgabe verwerfen</strong></p>
<p><code>0 8,17 * * *      /usr/bin/script.sh >/dev/null 2>&#038;1<br />
</code></p>
<p>2>&#038;1 bedeutet, das sowohl die normale Ausgabe als auch Fehler in die vorher angegebene Datei umgeleitet werden.</p>
<h3>Cronjob-Dateien und Verzeichnisse</h3>
<p>Zusätzlich zum crontab-Befehl gibt es je nach Distribution Dateien, die systemweite Crontabs beinhalten und nur durch den User root bearbeitet werden können:</p>
<p><strong>/etc/crontab</strong></p>
<p>Die System-Crontab-Datei, in der zusätzlich noch ein System-Benutzer, der den Befehl ausführen soll, mit angegeben werden muß:</p>
<p><code><strong>1 2 3 4 5 Benutzer Befehl</strong><br />
<br />
1 = Minute (0-59)<br />
2 = Stunde (0-23)<br />
3 = Tag (0-31)<br />
4 = Monat (1-12)<br />
5 = Wochentag (0-7, Sonntag ist 0 oder 7)<br />
Benutzer = Benutzername des Benutzers, unter dem der Befehl ausgeführt wird.<br />
Befehl = Der auszuführende Befehl.<br />
</code></p>
<p>Beispiel:<br />
<code>0 8,17 * * *      root /usr/bin/script.sh >>/var/log/cron/send_reminder_mail 2>&#038;1<br />
0 3 * * *      wwwrun /usr/bin/webjobs_nighly.sh >>/var/log/cron/send_reminder_mail 2>&#038;1<br />
</code></p>
<p><strong>/etc/cron* Verzeichnisse</strong></p>
<p>Eine weitere Möglichkeit Cronjobs anzulegen sind die Verzeichnisse unter /etc/cron*, in denen alle enthaltenen Dateien zum bestimmten Zeitpunkt ausgeführt werden. Die Dateien im Einzelnen</p>
<p>/etc/cron.d/ = Erweiterungen zur /etc/crontab-Datei, gleiche Syntax.<br />
/etc/cron.daily/ = Einmal irgendwann täglich.<br />
/etc/cron.hourly/ = Einmal irgendwann stündlich.<br />
/etc/cron.monthly/ = Einmal irgendwann monatlich.<br />
/etc/cron.weekly/ = Einmal irgendwann wöchentlich.</p>
<p>Die letzten vier werden oft genutzt, wenn ein Job in einem bestimmten Interval erledigt werden muß, der genaue Zeitpunkt hierfür aber unerheblich ist.</p>
<h3>Crontab und gut?</h3>
<p><img src="http://stetix.de/wp-content/uploads/2010/01/job-selector1.jpg" alt="job selector1 Crontab Tutorial und Syntax: Cronjobs unter Linux einrichten und verstehen" title="job-selector" width="300" height="300" class="alignright size-full wp-image-1311" /></p>
<p>Ich hoffe, ich konnte einen kleinen Einblick in die Cronjobs unter Linux geben und dem ein oder anderen bei der Syntax behilflich sein. Dieser Artikel entsteht auch mit etwas Eigennutz, da ich auch oft überlegen muß, wie die genaue Reihenfolge in der Crontab nun ist.  Es gibt natürlich noch eine Menge anderer Tools wie <a href="http://linux.about.com/library/cmd/blcmdl1_at.htm">at</a>, <a href="http://anacron.sourceforge.net/">anacron</a>, <a href="http://fcron.free.fr/">fcron</a> und so weiter. Cronjob hat für mich jedoch sehr zuverlässig gearbeitet, weshalb ich andere Tools noch nicht in Betracht gezogen habe.</p>
<p>Let the crons work!</p>
<p style="clear: both; margin-bottom: 30px;">
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/cronjob-linux-tutorial-und-crontab-syntax.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mit Ruby die Twitter Streaming API nutzen: TweetStream</title>
		<link>http://stetix.de/mit-ruby-die-twitter-streaming-api-nutzen-tweetstream.html</link>
		<comments>http://stetix.de/mit-ruby-die-twitter-streaming-api-nutzen-tweetstream.html#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:52:48 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1194</guid>
		<description><![CDATA[Wer auf die Twitter-API zugreift kennt das Problem des ständigen Polling der API, d.h. man muß in der Software mit Hilfe von Cronjobs oder ähnlichem aller paar Sekunden nach neuen Tweets schauen. Das hat sich letztes Jahr zum Glück mit der Twitter Streaming API geändert. Nun kann man per Stream auf die Tweets zugreifen, eine [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/01/twitter-unfiltered-195x300.jpg" alt="twitter unfiltered 195x300 Mit Ruby die Twitter Streaming API nutzen: TweetStream" title="twitter-unfiltered" width="195" height="300" class="alignright size-medium wp-image-1195" /></p>
<p style="margin-top: 20px;">Wer auf die <a href="http://apiwiki.twitter.com/">Twitter-API</a> zugreift kennt das Problem des ständigen <a href="http://de.wikipedia.org/wiki/Polling_%28Informatik%29">Polling</a> der API, d.h. man muß in der Software mit Hilfe von Cronjobs oder ähnlichem aller paar Sekunden nach neuen Tweets schauen.
</p>
<p>Das hat sich letztes Jahr zum Glück mit der <a href="http://apiwiki.twitter.com/Streaming-API-Documentation">Twitter Streaming API</a> geändert. Nun kann man per Stream auf die Tweets zugreifen, eine tolle Sache! </p>
<p>Um den Stream mit <a href="http://www.ruby-lang.org/de/">Ruby</a> zu nutzen gibt es ein <a href="http://de.wikipedia.org/wiki/RubyGems">Gem</a> von <a href="http://www.intridea.com/">Intridea</a> genannt TweetStream. Mit diesem <a href="http://de.wikipedia.org/wiki/RubyGems">Gem</a> ist es sehr einfach möglich Tweets zu lesen, sogar ein Daemon ist enthalten.</p>
<pre name="code" class="ruby">

require 'rubygems'
require 'tweetstream'

# The third argument is an optional process name.
TweetStream::Daemon.new('user','pass','tracker').track('keyword1','keyword2') do |status|
  # Do something like dump the status to ActiveRecord
  # or anything else you want.
end
</pre>
<p>Wo man es herbekommt, wie man es installiert und nutzt erklären Sie in Ihrem Blog:</p>
<p><big><a href="http://www.intridea.com/2009/9/22/tweetstream-ruby-access-to-the-twitter-streaming-api">TweetStream: Ruby Access to the Twitter Streaming API</a></big></p>
<p>Happy Streaming!</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/mit-ruby-die-twitter-streaming-api-nutzen-tweetstream.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress: PHP-Code und PHP-Script einbinden</title>
		<link>http://stetix.de/wordpress-phpcode-und-phpscript-einbinden.html</link>
		<comments>http://stetix.de/wordpress-phpcode-und-phpscript-einbinden.html#comments</comments>
		<pubDate>Thu, 08 Oct 2009 15:45:36 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=986</guid>
		<description><![CDATA[Wenn man PHP-Code bzw. bestehende oder neue PHP-Dateien in WordPress einbinden möchte, macht man das am besten im aktuellen Theme von WordPress. Man legt ein sogenanntes Seiten-Template an, welches man bei der Bearbeitung der Seite in WordPress wählen kann. In diesem Template befindet sich dann das gewünschte PHP-Script. Seiten-Template mit PHP-Code im Theme Ordner von [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2009/10/php-icon.jpg" alt="php icon Wordpress: PHP Code und PHP Script einbinden" title="php-icon" width="150" height="150" class="alignright size-full wp-image-1040" /><img src="http://stetix.de/wp-content/uploads/2009/10/wp-icon-150x150.gif" alt="wp icon 150x150 Wordpress: PHP Code und PHP Script einbinden" title="wp-icon-150x150" width="150" height="150" class="alignright size-full wp-image-1041" />Wenn man PHP-Code bzw. bestehende oder neue PHP-Dateien in WordPress einbinden möchte, macht man das am besten im aktuellen Theme von WordPress. Man legt ein sogenanntes Seiten-Template an, welches man bei der Bearbeitung der Seite in WordPress wählen kann. In diesem Template befindet sich dann das gewünschte PHP-Script. </p>
<p><span id="more-986"></span></p>
<h3>Seiten-Template mit PHP-Code im Theme Ordner von WordPress anlegen</h3>
<p>Lege eine neue Datei im Theme-Ordner unter <em>wp-content/theme/&lt;themename&gt;/deintemplate.php</em> mit folgendem Inhalt an:</p>
<p><code>&lt;?<br />
/*<br />
Template Name: DeinTemplate-Name<br />
*/<br />
?&gt;<br />
&lt;?php get_header(); ?&gt;<br />
<br />
&lt;?php if (have_posts()) : ?&gt;<br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
<br />
&lt;div class="post page"&gt;<br />
&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;<br />
&lt;?php the_content(); ?&gt;<br />
&lt;/div&gt;<br />
<br />
&lt;?php endwhile; ?&gt;<br />
&lt;?php endif; ?&gt;<br />
<br />
&lt;?php echo &quot;Hier kommt mein tolles PHP-Script bzw. der PHP-Code rein!&quot;; ?&gt;<br />
<br />
&lt;?php get_footer(); ?&gt;<br />
</code></p>
<p>Wichtig hierbei ist der Kommentar, der unbedingt enhalten sein muss. WordPress erkennt anhand des Strings &quot;Template Name&quot;, das es sich um ein Template handelt. Die Funktion <a href="http://codex.wordpress.org/Function_Reference/get_header">get_header</a> bindet das Header Template ein (wie gewohnt) und die Funktion <a href="http://codex.wordpress.org/Function_Reference/get_footer">get_footer</a> das Footer-Template. Nach dem Header wird mit den <a href="http://codex.wordpress.org/The_Loop">Post-Funktionen</a> der Inhalt der Seite, also die Headline und der Text, ausgelesen.<br />
Anstelle des echo-Befehles (Hier kommt mein&#8230;) kann jetzt gewünschter PHP-Code eingefügt werden.</p>
<h3>Seiten-Template auswählen und Seite mit PHP-Code anlegen</h3>
<p>Jetzt kannst du im WordPress-Admin in der Seiten-Verwaltung unter &quot;Seiten&quot; ganz normal eine Seite anlegen und auf der rechten Seite neben dem Formular das erstellte Seiten-Template mit dem Namen aus dem Kommentar auswählen. Seite veröffentlichen und schon wird der Code (der hoffentlich fehlerfrei ist) auf der erstellten Seite ausgeführt.</p>
<p>Das Verfahren kann man natürlich beliebig weiterführen und komplexere Anwendungen in das Template einbinden. Das kurze Tutorial hier soll lediglich als Einstieg in dieses Thema dienen.</p>
<p>Mehr Info bei WordPress: <a href="http://codex.wordpress.org/Pages#Default_Theme_Page_Templates">Theme-Page-Templates</a></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/wordpress-phpcode-und-phpscript-einbinden.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>jQuery: Select Wert auslesen</title>
		<link>http://stetix.de/jquery-select-wert-auslesen.html</link>
		<comments>http://stetix.de/jquery-select-wert-auslesen.html#comments</comments>
		<pubDate>Wed, 06 May 2009 20:55:17 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=494</guid>
		<description><![CDATA[Weil ich öfters gefragt werde, hier mal ein kurzes Tutorial, wie ich den Wert des aktuell gewählten Wertes eines Selects mit jQuery auslesen kann. Eigentlich funktioniert das wie mit anderen Input-Feldern auch, nämlich mit der Funktion &#8220;val&#8221;. Angenommen, wir haben folgende Selectbox: &#60;select name="hersteller" id="hersteller"&#62; &#60;option value=""&#62;Hersteller&#60;option&#62; &#60;option value="1"&#62;Audi&#60;option&#62; &#60;option value="2"&#62;Opel&#60;option&#62; &#60;option value="3"&#62;Mercedes&#60;option&#62; &#60;option value="4"&#62;Volkswagen&#60;option&#62; [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Weil ich öfters gefragt werde, hier mal ein kurzes Tutorial, wie ich den Wert des aktuell gewählten Wertes eines Selects mit <a href="http://jquery.com/">jQuery</a> auslesen kann. Eigentlich funktioniert das wie mit anderen Input-Feldern auch, nämlich mit der Funktion &#8220;val&#8221;. Angenommen, wir haben folgende Selectbox:</p>
<p><code>&lt;select name="hersteller" id="hersteller"&gt;<br />
&lt;option value=""&gt;Hersteller&lt;option&gt;<br />
&lt;option value="1"&gt;Audi&lt;option&gt;<br />
&lt;option value="2"&gt;Opel&lt;option&gt;<br />
&lt;option value="3"&gt;Mercedes&lt;option&gt;<br />
&lt;option value="4"&gt;Volkswagen&lt;option&gt;<br />
&lt;/select&gt;<br />
</code></p>
<p>Den Wert der aktuell gewählten Option erhalten wir mit:</p>
<p><code>$('#hersteller').val();<br />
</code></p>
<p>Möchten wir den Text, also Inhalt der aktuell gewählten Option erhalten, geht dies über den zusätzlichen Selektor &#8220;:selected&#8221; und die Funktion &#8220;text&#8221;:</p>
<p><code>$('#hersteller :selected').text();<br />
</code></p>
<p>Auch das Auslesen von mehreren gewählten Select-Optionen/Werten ist mit dem Selektor &#8220;:selected&#8221; und einer each-Schleife möglich:</p>
<p><code>$('#hersteller :selected').each(function(i, option){<br />
 // hier können wir den Inhalt von "option" verwerten<br />
});<br />
</code></p>
<p>Oder das Setzen einer Select-Option:</p>
<p><code>$('#hersteller').val("1");<br />
</code></p>
<p>Eigentlich alles ganz easy oder? <a href="http://jquery.com/">jQuery</a> macht Spass!</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/jquery-select-wert-auslesen.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Macht euch nackig, zeigt her euren &lt;body&gt;</title>
		<link>http://stetix.de/macht-euch-nackig-zeigther-euren-body.html</link>
		<comments>http://stetix.de/macht-euch-nackig-zeigther-euren-body.html#comments</comments>
		<pubDate>Fri, 27 Feb 2009 15:37:34 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=245</guid>
		<description><![CDATA[Am 9. April 2009 gibt es viele nackte Webseiten zu sehen, wenn es wieder heisst &#8220;CSS Nackig Tag&#8221; &#8211; Webseiten sind auch ohne Design leserlich. Die Idee dahinter ist, den Webstandard, genauer den korrekten Gebrauch von (X)HTML, semantischem Markup, hierarchischer Struktur und den Inhalt zu fördern. An diesem Tag werden alle teilnehmenden Webseiten Ihre Stylesheets [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Am 9. April 2009 gibt es viele nackte Webseiten zu sehen, wenn es wieder heisst &#8220;CSS Nackig Tag&#8221; &#8211; Webseiten sind auch ohne Design leserlich. Die Idee dahinter ist, den Webstandard, genauer den korrekten Gebrauch von (X)HTML, semantischem Markup, hierarchischer Struktur und den Inhalt zu fördern.<br />
An diesem Tag werden alle teilnehmenden Webseiten Ihre Stylesheets entfernen, die das Design jeder Webseite festlegen. Anmelden kann man sich leider nicht mehr, mitmachen aber trotzdem. Ich bin dabei!</p>
<p>Mehr Informationen, sowie Tools und Verweise auf WordPress-Plugins gibt es <a href="http://bueltge.de/es-wird-wieder-nackt/899/">hier in deutsch</a> und <a href="http://naked.dustindiaz.com/">hier in englisch im Original</a>.</p>
<p><img class="alignnone size-full wp-image-252" title="CSS Naked Day" src="http://stetix.de/wp-content/uploads/2009/02/naked-day1.png" alt="naked day1 Macht euch nackig, zeigt her euren &lt;body&gt;" width="268" height="103" /></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/macht-euch-nackig-zeigther-euren-body.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc
Database Caching 3/31 queries in 0.012 seconds using apc
Object Caching 1488/1512 objects using apc

Served from: stetix.de @ 2012-05-22 22:51:26 -->
