mtemp: Umleitung in htaccess einschränken

Hallo,

habe folgendes Skript für .htaccess übernommen, damit der Aufruf von (http://)www.irgendwas.de weitergeleitet wird zu (http://)irgendwas.de, also ohne www:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^www.irgendwas.de [nc]
rewriterule ^(.*)$ http://irgendwas.de/$1 [r=301,nc]

(quelle: http://corz.org/serv/tricks/htaccess2.php#NOWWW)

So weit, so gut.
Wie kann ich sozusagen diese 4 Zeilen nur für nicht lokale Adressen anwenden? Sprich, wenn ich auf localhost arbeite, sollen diese Zeilen ignoriert werden.

Grüße und vielen Dank
mtemp

  1. Hallo,

    rewritecond %{http_host} ^www.irgendwas.de [nc]
    rewriterule ^(.*)$ http://irgendwas.de/$1 [r=301,nc]
    Wie kann ich sozusagen diese 4 Zeilen nur für nicht lokale Adressen anwenden? Sprich, wenn ich auf localhost arbeite, sollen diese Zeilen ignoriert werden.

    Indem du die TLD in den Regeln mit einbeziehst.

    Grüße, Matze

    1. Hallo nochmal^^,

      rewritecond %{http_host} ^www.irgendwas.de [nc]
      rewriterule ^(.*)$ http://irgendwas.de/$1 [r=301,nc]
      Wie kann ich sozusagen diese 4 Zeilen nur für nicht lokale Adressen anwenden? Sprich, wenn ich auf localhost arbeite, sollen diese Zeilen ignoriert werden.

      Indem du die TLD in den Regeln mit einbeziehst.

      Sorry, ich bin in den Regulären Ausdrücken nicht so fit,
      deswegen hab ich es nicht gleich gepostet, aber ich versuchs trotzdem mal. Schauen wir uns die Regel doch mal an.

      rewriterule^(.*)$
      ^ springt an den Zeilenanfang
      ( eröffnet eine Gruppe an Suchmustern
      . steht für ein beliebieges Zeichen aus Newline
      * sorgt dafür, dass der . mehrfach beachtet wird
      ) schließt die Gruppe
      $ erkennt das Zeilenende

      Jetzt sollten wir das ganze so anpassen können

      rewriterule^(.*).(a-z)/(.*)$
      \ sorgt dafür, dass der . als Punkt, nicht jedes beliebige Zeichen steht
      .(a-z)/$ sollte dann nach z.B. .com/ finden.

      Wie gesagt bin ich da aber nicht so fit.

      Grüße, Matze

      1. Hallo mtemp,

        rewritecond %{http_host} ^www.irgendwas.de [nc]
        rewriterule ^(.*)$ http://irgendwas.de/$1 [r=301,nc]
        Wie kann ich sozusagen diese 4 Zeilen nur für nicht lokale Adressen anwenden? Sprich, wenn ich auf localhost arbeite, sollen diese Zeilen ignoriert werden.

        Afaik würde ich sagen, dass diese Regeln auf localhost sowieso nicht zum Einsatz kommen, da in der ersten Zeile doch schon geprüft wird, ob der HTTP_HOST "www.irgendwas.de" enthält. Das ist normalerweise bei localhost nicht der Fall.

        An Matze:

        rewriterule^(.*)$
        * sorgt dafür, dass der . mehrfach beachtet wird

        Meines Wissens steht der * für die Anzahl an Zeichen.
        Der * steht dabei für Zeichenanzahl >= 0,
        ein + steht dabei für Zeichenanzahl > 0 und dann kann man noch die genaue Mindest- und Maximalanzahl angeben.

        LG
        Frank

  2. hallo,

    damit der Aufruf von (http://)www.irgendwas.de weitergeleitet wird zu (http://)irgendwas.de, also ohne www

    In sehr vielen Fällen ist das gar nicht nötig. Beispiel: http://selfhtml.org liefert dir exakt dasselbe wie http://www.selfhtml.org - oder, um nicht den Eindruck zu erwecken, ich wüßte alles über die SELFHTML-Server und deren DNS-Registrierung: http://christoph-schnauss.de liefert dir exakt dasselbe wie http://www.christoph-schnauss.de.

    (quelle: http://corz.org/serv/tricks/htaccess2.php#NOWWW)

    Interessante Adresse, kannte ich bisher nicht.

    Wie kann ich sozusagen diese 4 Zeilen nur für nicht lokale Adressen anwenden? Sprich, wenn ich auf localhost arbeite, sollen diese Zeilen ignoriert werden.

    Warum willst du auf deinem _lokalen_ Server überhaupt dieselbe .htaccess einsetzen, die du online benutzt?
    Wenn du das aber unbedingt haben möhtest, bleibt dir vermutlich nichts anderes übrig, als zwei unterschiedliche virtuelle Hosts zu definieren.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|