berlinsurfer: Regex für Subdomains

Hallo, Community,
nun bin ich auch endlich Mitglied, nach monatelangem Lesen :-)
Mein erstes Posting ist (leider?) auch gleich eine Frage:
ich richte gerade eine Seite in Joomla ein und möchte jede URL um schreiben und zwar wie folgt:
1. Aus der Domain www.meinedomain.de/impressum soll z.B. impressum.meinedomain.de werden
2. Natürlich sollen auch die Querys weitergeschleift werden, derart: www.meinedomain.de/blog/seite1 -> blog.meinedomain.de/seite1

Serverseitig ist das alles kein Problem (ServerAlias, mod_rewrite, etc.) nur das Umschreiben bereitet mir leider noch Probleme.
Das habe ich:

$base = 'http://www.meinedomain.de/';
$regex = '/(<a\s[^>]*)href="/?(.*)/?(.*)?"[^>]*>(.*)</a>/siU';
$buffer = preg_replace($regex, '$1href="$2'.$base.'$3">$4</a>', $buffer);

Kann mir da jemand helfen ?

Vielen Dank,
berlinsurfer

  1. Hallo, Community,
    nun bin ich auch endlich Mitglied, nach monatelangem Lesen :-)
    Mein erstes Posting ist (leider?) auch gleich eine Frage:
    ich richte gerade eine Seite in Joomla ein und möchte jede URL um schreiben und zwar wie folgt:

    1. Aus der Domain www.meinedomain.de/impressum soll z.B. impressum.meinedomain.de werden

    Wouzhuo denn das? Subdomains und Pfade gibt es nicht zum Spaß, die haben Bedeutungen. Ich möchte dich daraufhinweisen, dass das imho nur Sinn macht, wenn du tatsächlich Subdomains abbilden willst und aus Bequemlichkeit oder anderen Gründen(?!) eine anders aussehende Ordnerstruktur bevorzugst.

    1. Natürlich sollen auch die Querys weitergeschleift werden, derart: www.meinedomain.de/blog/seite1 -> blog.meinedomain.de/seite1

    Gewöhn dir an, als Beispiel immer example.org o.ä. zu nehmen. Kann sonst in blöden Fällen zu ernsthaften Schwierigkeiten führen.

    Serverseitig ist das alles kein Problem (ServerAlias, mod_rewrite, etc.) nur das Umschreiben bereitet mir leider noch Probleme.
    Das habe ich:

    $base = 'http://www.meinedomain.de/';
    $regex = '/(<a\s[^>]*)href="/?(.*)/?(.*)?"[^>]*>(.*)</a>/siU';
    $buffer = preg_replace($regex, '$1href="$2'.$base.'$3">$4</a>', $buffer);

    Kann mir da jemand helfen ?

    Eine etwas präzisere Problembeschreibung inkl. Beispielen wäre schön. Da es schon spät ist und ich gerade keine Lust habe mich durch deinen Code zu wühlen, hier mal mein schneller Ansatz:

    (www.)?meinedomain.de/(.*?)(/.*)?
    ->
    $2.meinedomain.de$3

    Sieht irgendwie viel kleiner aus als dein Code, sollte aber das gleiche erfüllen. Ach, schreibt doch bitte mal genau, welchen Ausdruck du in welchen Ausdruck transformieren willst. In deiner Erläuterung stand nämlich nichts von href und so.

    Grüße.

    1. Danke euch beiden.
      Hab's jetzt anders gelöst.
      Gruß,
      Jan

  2. Ein Regulärer Ausdruck ist dafür ungeeignet da das ganze so komplex wird, dass es sich ins unkontrollierbare verschiebt.

    Verwende einen XML-Parser.