<?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; ruby</title>
	<atom:link href="http://stetix.de/tag/ruby/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>Auf WordPress entwickeln oder lieber eigene Anwendungen z.B. in Ruby on Rails schreiben?</title>
		<link>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html</link>
		<comments>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html#comments</comments>
		<pubDate>Thu, 16 Dec 2010 15:48:13 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1613</guid>
		<description><![CDATA[Aktuell stelle ich mir oft die Frage, ob ich Software für WordPress entwickle oder eine eigene Anwendung in Ruby on Rails schreibe. Beides hat seine Vor- und Nachteile. Ich entwickle seit 10 Jahren Software in PHP, seit etwa 5 Jahren auch in Ruby on Rails, was ich aufgrund seiner vielen bekannten positiven Eigenschaften bei komplett [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2010/12/wordpress-oder-rails.jpg" alt="wordpress oder rails Auf Wordpress entwickeln oder lieber eigene Anwendungen z.B. in Ruby on Rails schreiben?" title="wordpress-oder-rails" width="351" height="186" class="alignright size-full wp-image-1622" />Aktuell stelle ich mir oft die Frage, ob ich Software für WordPress entwickle oder eine eigene Anwendung in Ruby on Rails schreibe. Beides hat seine Vor- und Nachteile. Ich entwickle seit 10 Jahren Software in PHP, seit etwa 5 Jahren auch in Ruby on Rails, was ich aufgrund seiner vielen bekannten positiven Eigenschaften bei komplett neuen Anwendungen auf jeden Fall vorziehen würde. Aus diesem Grund stellt sich mir diese Frage, obwohl Rails und WordPress auf den ersten Blick ja nicht unbedingt in der gleichen Kategorie von Tools anzusiedeln sind, auf den zweiten aber beides Frameworks mit ähnlichen Voraussetzungen sind.</p>
<p><a href="http://wordpress.org/">WordPress</a> hat eine riesige Community, viele Nutzer und einen hohen Bekanntheitsgrad. Wenn man beispielsweisse ein <a href="http://codex.wordpress.org/Plugins">WordPress-Plugin</a> schreiben möchte, kann man sich <a href="http://wordpress.org/extend/plugins/">durch schon vorhandene Plugins</a> wuseln und von bestehendem Code Anregungen holen und evtl. sogar Teile verwenden &#8211; natürlich nur unter Einhaltung des Copyrights. Möchte man dieses Plugin verkaufen, hat man mit WordPress eine sehr große und täglich wachsende Menge an potenziellen Kunden. Ein weiterer Vorteil ist die große Menge an Einsatzgebieten von WordPress. WordPress kann als Blog verwendet werden, als normale Webseite mit oder ohne CMS, als Forum, als Gallery, als Community und und und. Das meiste natürlich mit fertigen Plugins. Warum also etwas eigenes entwickeln, wenn es alles schon gibt? Zumal ja fast jede Webseite sowieso einen Blog und somit auch WordPress hat und benötigt. Die Nachteile bei WordPress liegen ganz klar bei der mangelnden Performance und &#8211; für mich persönlich &#8211; an der  etwas veralteten Scriptsprache <a href="http://de.php.net/">PHP</a>. Logisch kann man die Performance mit ein paar Tricks, passenden Plugins und besserer Server-Hardware tunen, dennoch ist WordPress den eigenen Lösungen in PHP oder Ruby On Rails klar unterlegen. Gerade wenn der Content in der Datenbank wächst &#8211; und ich meine hiermit eine Menge von 1000+ Artikeln &#8211; wird WordPress zur Slow-Motion-Bremse.</p>
<p><a href="http://rubyonrails.org/">Ruby on Rails</a> ist hingegen, wenn man es richtig anstellt, ein richtiger Turbo und Spaßfaktor. Das Coden in Ruby macht einfach einen Riesenspaß, was die Produktivität um einiges steigert. Das <a href="http://de.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself">DRY-Prinzip</a> richtig angewendet, muß hier bei gleicher Funktionalität auch weniger Code geschrieben werden. Man kann also sagen, das mit Rails einfacher in hoher Qualität Software entwickelt werden kann. Ebenso gibt es für fast alle Belange fertige Plugins und Librarys, die man beliebig erweitern und verwenden kann. Die Menge der Entwickler ist zwar hoch und wird immer höher, aber es gibt lange noch nicht so viele wie für WordPress. Ruby On Rails wird eher von Profis eingesetzt, Hobby-Entwickler hingegen greifen schnell zu PHP und WordPress. Desweiteren benötigt man für Rails immer eine gesonderte Server-Konfiguration, weshalb die meisten bekannten Webhoster hier ausscheiden. Noch ein negativer Punkt ist, das es für Rails keine gute Blog-Software gibt. Zwar sind <a href="https://github.com/fdv/typo/wiki/">einige</a> <a href="http://radiantcms.org/">wenige</a> <a href="https://github.com/halorgium/mephisto">Versuche</a> <a href="https://github.com/xaviershay/enki">vorhanden</a>, die an WordPress jedoch bei weitem nicht heranreichen. Schade eigentlich, eine gute Blog-Software in Ruby wär was feines und sicher ein schönes Projekt.</p>
<p>Also bleibt ganz klar eines zu sagen. Möchte man Software vielen Millionen Menschen verfügbar machen oder womöglich verkaufen, empfiehlt sich der Einsatz von WordPress. Legt man jedoch Wert auf Performance,  Spaß beim Coden und hat Profis zur Hand, ist Rails eine gute Wahl. Also ist meine erste Überlegung in der Richtung ab jetzt: &#8220;Möchte ich die Software nur für mich oder auserwählte Kunden nutzen oder an tausende Kunden verkaufen?&#8221;.</p>
<p><strong>Was meint Ihr dazu?</strong> Lieber WordPress oder Rails bzw. anderen Sprachen oder Frameworks? Freu mich über Kommentare!</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/auf-wordpress-entwickeln-oder-lieber-eigene-anwendungen-z-b-in-ruby-on-rails-schreiben.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Eine Liste mit URL&#8217;s auf 404 Not Found Fehler prüfen: Mit Ruby!</title>
		<link>http://stetix.de/urls-auf-404-fehler-pruefen-mit-ruby.html</link>
		<comments>http://stetix.de/urls-auf-404-fehler-pruefen-mit-ruby.html#comments</comments>
		<pubDate>Wed, 25 Aug 2010 09:19:43 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[notfound]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1534</guid>
		<description><![CDATA[Oft kommt es als Webmaster vor, das man eine Liste mit URL&#8217;s auf Fehler prüfen muß. Um zum Beispiel eine Liste mit URL&#8217;s auf tote Links bzw. 404 Not Found Fehler zu prüfen, kann man folgendes in Ruby geschriebene Script zu Hilfe nehmen. Das Script fällt in die Kategorie Quick Hack und ist unbedingt ausbaufähig. [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>Oft kommt es als Webmaster vor, das man eine Liste mit URL&#8217;s auf Fehler prüfen muß. Um zum Beispiel eine Liste mit URL&#8217;s auf <a href="http://de.wikipedia.org/wiki/Toter_Link">tote Links</a> bzw. <a href="http://de.wikipedia.org/wiki/HTTP-Statuscode#4XX_.E2.80.93_Client-Fehler">404 Not Found Fehler</a> zu prüfen, kann man folgendes in Ruby geschriebene Script zu Hilfe nehmen. Das Script fällt in die Kategorie Quick Hack und ist unbedingt ausbaufähig.</p>
<pre name="code" class="ruby">
require 'net/http'

def check_for_notfound(url)
  uri = URI.parse(url)
  response = Net::HTTP.get_response(uri)

  case response
    when Net::HTTPNotFound:
      return true
    when Net::HTTPRedirection:
      puts check_for_notfound('http://' + uri.host + response['location'])
    else
      return nil
  end
end

File.open(ARGV[0]) do |f|
  f.each do |line|
    result = check_for_notfound(line)
    if !result.nil? and result == true
     puts line
    end
  end
end
</pre>
<p>Wer ein besseres Script hat oder etwa eine Möglichkeit weiß, wie man dies mit <a href="http://de.wikipedia.org/wiki/Wget">wget</a> lösen kann, bitte einen Kommentar hinterlassen. Danke!</p>
<p><strong>Update:</strong></p>
<p>Wie ich <a href="http://amadain.net/2007/07/22/use-wget-check-urls-a-web-site">Dank eines anderen Blogs</a> erfahren konnte, ist das mit wget natürlich auch schnell und sogar mit einem Einzeiler lösbar:</p>
<p><code>wget -r -nd --delete-after --no-parent --no-cookies --input-file=urls.txt</code></p>
<p>Ob man nun Ruby oder wget nutzt, hängt ganz davon ab, ob man es in eine Software integrieren möchte oder ob es nur einem schnellen administrativen Todo dienen soll.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/urls-auf-404-fehler-pruefen-mit-ruby.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sinatra 1.0 veröffentlicht: Ein Ruby Web Application Framework</title>
		<link>http://stetix.de/sinatra-1-0-veroffentlicht-ein-ruby-web-application-framework.html</link>
		<comments>http://stetix.de/sinatra-1-0-veroffentlicht-ein-ruby-web-application-framework.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 12:38:23 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Ruby On Rails]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=1403</guid>
		<description><![CDATA[Sinatra hat offiziell den Landmark Release 1.0 erreicht. Das schmale Web Application Framework ist eine echte Alternative zu Ruby On Rails, insbesondere wenn man kleinere und schnellere Projekte erstellen möchte. Ich selbst habe es einige Male getestet, aber aus Zeitmangel für&#8217;s Lernen leider noch nicht im Einsatz. Eine einfache Webseite ist in Sinatra leicht geschrieben: [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sinatrarb.com/">Sinatra</a> hat offiziell den Landmark Release 1.0 erreicht. Das schmale Web Application Framework ist eine echte Alternative zu <a href="http://rubyonrails.org/">Ruby On Rails</a>, insbesondere wenn man kleinere und schnellere Projekte erstellen möchte.<br />
Ich selbst habe es einige Male getestet, aber aus Zeitmangel für&#8217;s Lernen leider noch nicht im Einsatz.</p>
<p>Eine einfache Webseite ist in <a href="http://www.sinatrarb.com/">Sinatra</a> leicht geschrieben:</p>
<p><code class="ruby">require 'rubygems'<br />
require 'sinatra'<br />
<br />
get '/hi' do<br />
  "Hello World!"<br />
end</code></p>
<p>Mehr Infos unter <a href="http://www.rubyinside.com/sinatra-1-0-released-3162.html">http://www.rubyinside.com/sinatra-1-0-released-3162.html</a>.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/sinatra-1-0-veroffentlicht-ein-ruby-web-application-framework.html/feed</wfw:commentRss>
		<slash:comments>0</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>Ruby On Rails: Date Helper-Funktion time_ago_in_words in deutsch</title>
		<link>http://stetix.de/ruby-on-rails-date-helper-funktion-time_ago_in_words-in-deutsch.html</link>
		<comments>http://stetix.de/ruby-on-rails-date-helper-funktion-time_ago_in_words-in-deutsch.html#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:11:24 +0000</pubDate>
		<dc:creator>Nico</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://stetix.de/?p=647</guid>
		<description><![CDATA[Die tolle Ruby-Funktion time_ago_in_words bzw. distance_of_time_in_words und distance_of_time_in_words_to_now aus dem Rails-Framework zeigt die vergangene Zeit seit einem bestimmten Zeitpunkt in Worten an. Wer das Ganze für Rails-Versionen kleiner 2.2 in deutsch haben möchte, kann folgende ins Deutsche übersetzte Funktion einfach in den ApplicationHelper unter app/helpers/application_helper.rb einfügen: def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false) from_time [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://stetix.de/wp-content/uploads/2009/08/2054205239_334a519d0e-300x225.jpg" alt="2054205239 334a519d0e 300x225 Ruby On Rails: Date Helper Funktion time ago in words in deutsch" title="2054205239_334a519d0e" width="300" height="225" class="alignright size-medium wp-image-650" />Die tolle <a href="http://www.ruby-lang.org/de/">Ruby</a>-Funktion <strong>time_ago_in_words</strong> bzw. <strong>distance_of_time_in_words</strong> und <strong>distance_of_time_in_words_to_now</strong> aus dem <a href="http://rubyonrails.org/">Rails-Framework</a> zeigt die vergangene Zeit seit einem bestimmten Zeitpunkt in Worten an. Wer das Ganze für Rails-Versionen kleiner 2.2 in deutsch haben möchte, kann folgende ins Deutsche übersetzte Funktion einfach in den ApplicationHelper unter app/helpers/application_helper.rb einfügen:</p>
<pre name="code" class="ruby">

  def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
    from_time = from_time.to_time if from_time.respond_to?(:to_time)
    to_time = to_time.to_time if to_time.respond_to?(:to_time)
    distance_in_minutes = (((to_time - from_time).abs)/60).round
    distance_in_seconds = ((to_time - from_time).abs).round

    case distance_in_minutes
      when 0..1
        return (distance_in_minutes == 0) ? 'weniger als einer Minute' : 'einer Minute' unless include_seconds
        case distance_in_seconds
          when 0..4   then 'weniger als 5 Sekunden'
          when 5..9   then 'weniger als 10 Sekunden'
          when 10..19 then 'weniger als 20 Sekunden'
          when 20..39 then 'einer halben Minute'
          when 40..59 then 'weniger als einer Minute'
          else             '1 Minute'
        end

      when 2..44           then "#{distance_in_minutes} Minuten"
      when 45..89          then 'ca. 1 Stunde'
      when 90..1439        then "ca. #{(distance_in_minutes.to_f / 60.0).round} Stunden"
      when 1440..2879      then '1 Tag'
      when 2880..43199     then "#{(distance_in_minutes / 1440).round} Tagen"
      when 43200..86399    then 'ca. 1 Monat'
      when 86400..525599   then "#{(distance_in_minutes / 43200).round} Monaten"
      when 525600..1051199 then 'ca. 1 Jahr'
      else                      "#{(distance_in_minutes / 525600).round} Jahren"
    end
  end
</pre>
<p>Nicht über den Funktions-Namen wundern, time_ago_in_words ist ein Alias für distance_of_time_in_words.</p>
<p><strong>Update:</strong></p>
<p>Viel einfacher wäre es natürlich, die I18n-Funktionen, die ab der Rails-Version 2.2 oder besser 2.3 enthalten sind zu nutzen. Hierfür muß man einfach in der Datei <strong>config/environment.rb</strong> den String </p>
<p><code>config.i18n.default_locale = :de</code> </p>
<p>(nach <em>Rails::Initializer.run do |config|</em> und vor <em>end</em>) einfügen und eine Datei unter <strong>config/locales/de.yml</strong> mit folgendem Inhalt anlegen:</p>
<pre name="code" class="ruby">
# German translations for Ruby on Rails
# by Clemens Kofler (clemens@railway.at)

de:
  datetime:
    distance_in_words:
      half_a_minute: 'eine halbe Minute'
      less_than_x_seconds:
        zero: 'weniger als 1 Sekunde'
        one: 'weniger als 1 Sekunde'
        other: 'weniger als {{count}} Sekunden'
      x_seconds:
        one: '1 Sekunde'
        other: '{{count}} Sekunden'
      less_than_x_minutes:
        zero: 'weniger als 1 Minute'
        one: 'weniger als eine Minute'
        other: 'weniger als {{count}} Minuten'
      x_minutes:
        one: '1 Minute'
        other: '{{count}} Minuten'
      about_x_hours:
        one: 'etwa 1 Stunde'
        other: 'etwa {{count}} Stunden'
      x_days:
        one: '1 Tag'
        other: '{{count}} Tage'
      about_x_months:
        one: 'etwa 1 Monat'
        other: 'etwa {{count}} Monate'
      x_months:
        one: '1 Monat'
        other: '{{count}} Monate'
      about_x_years:
        one: 'etwa 1 Jahr'
        other: 'etwa {{count}} Jahre'
      over_x_years:
        one: 'mehr als 1 Jahr'
        other: 'mehr als {{count}} Jahre'
    prompts:
      second: "Sekunden"
      minute: "Minuten"
      hour: "Stunden"
      day: "Tag"
      month: "Monat"
      year: "Jahr"

</pre>
<p>Quelle: <a href="http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale">Original-Datei mit noch mehr Übersetzungen</a> (auch für Active-Record-Messages und in anderen Sprachen) gibt es <a href="http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale">hier</a>.</p>
<p><small>Bild von <a href="http://www.flickr.com/photos/ppdigital/2054205239/">Darren Hester</a> auf <a href="http://www.flickr.com/photos/ppdigital/2054205239/">flickr</a>.</small></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://stetix.de/ruby-on-rails-date-helper-funktion-time_ago_in_words-in-deutsch.html/feed</wfw:commentRss>
		<slash:comments>2</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/24 queries in 0.006 seconds using apc
Object Caching 1389/1424 objects using apc

Served from: stetix.de @ 2012-05-22 01:01:04 -->
