.htaccess mod_rewrite

Hab folgendes Problem: habe eine klick-webseite, ähnlich wie myminicity, wo jetzt z.B.
anstatt www.build-your-house.xe.cx/?mode=house&house=mgier einfach mgier.build-your-house.xe.cx funktionieren sollte. nun hab ich aber keinen blassen schimmer wie ich das anstellen sollte. mein kümmerlicher versuch lautet:
RewriteRule (.*).build-your-house.xe.cx / build-your-house.xe.cx/?mode=house&house=$1
Die kümmerliche Antwort ist ein 500’er.

Ich brauch nen Profi. Wenn ich die richtige Lösung sehe verstehe ich es vielleicht.
Danke im Voraus
Mgier

Hi Mgier,

bei bplaced kannst du per htaccess keine subdomains anlegen, dies kannst du nur im User Cp.
Wenn du es aber so machen willst, solltest du dir einen eigenen Webserver oder Root server holen.

Da ich im moment einen Root server habe ^^, und ich ihn gerade nicht brauche, könnte ich es für dich hosten, dann gingen die Subdomains :smiley:

Meld dich einfach mal bei mir in Skype, MSN oder ICQ

mfg
Marv24

Doch, das geht mit Mod-Rewrite und ein bisschen PHP :wink:

RewriteCond %{HTTP_HOST} ^(.*)\.build-your-house.xe.cx$
RewriteRule - index.php?mode=house&house=get_from_host

Und in deiner PHP-Datei dann einfach:

if($_GET['house'] == "get_from_host")
   $house = preg_replace("!(.+)\.build-your-house.xe.cx!i", "$1", $_SERVER['HTTP_HOST']);
else
   $house = $_GET['house'];

Ja?
Hab ich gar nicht gewusst :stuck_out_tongue:

bplaced leitet Standardmäßig alle SubSubSubdomains auf die SubSubDomain weiter :wink:

afgg.asfwqeg.egweg.michi7x7.bplaced.net/

Ok ich probiers mal aus. (Hoffentlich kann Kilu das auch)
Danke, Gott :hail: :hail: :hail:

Ich hab probiert es an mehreren Stellen einzubauen, hat aber nicht geklappt, bzw bin wieder auf der index.php gelandet (unbekannte Get variable => header zum index)
Deshalb poste ich jetzt mal einen auszug aus meiner datei, um vor allem die struktur klar zu machen:


//Diverse Configuration & allgemeine Handlungen am Anfang der Datei

   if($_GET['mode'] == 'house'){
    if(empty($_GET['house'])){
    header('Location:./');
    } else {
    $house = mysql_real_escape_string($_GET['house']);
//Verarbeitung der Variable $house und dynamische Seitenanzeige
    }
   } 
    
   
   
   //ADD BOOK
    elseif($_GET['mode'] == 'newmsg'){
//Gästebucheintrag
       }

elseif($_GET['mode'] == 'rank'){
//Rangliste anzeigen
}
else{
//Startseite
}

Meine gesamte Seite ist nur auf dieser Datei aufgebaut (+header&footer datei und 1 css)
Wo muss ich das jetzt einbauen(den PHP teil)?

Da wo //Verarbeitung der Variable $house und dynamische Seitenanzeige steht, nur verwendest du dann statt $_GET[‘house’] schon $house

also bei mgier.build-your-house.xe.cx werde ich wieder auf die Startseite zurückgeboxt :frowning:
Das ist jetzt der teil…

if($_GET['mode'] == 'house'){ if(empty($_GET['house'])){ header('Location:./'); } else { if($_GET['house'] == "get_from_host"){ $house = preg_replace("!(.+)\.build-your-house.xe.cx!i", "$1", $_SERVER['HTTP_HOST']);} else { $house = $_GET['house']; } $sql = "SELECT * FROM `TABLE` WHERE `NAME` = '" . $house . "'";

//Diverse Configuration & allgemeine Handlungen am Anfang der Datei

   if($_GET['mode'] == 'house'){
    if(empty($_GET['house'])){
    header('Location:./');
    } else {
    $house = mysql_real_escape_string($_GET['house']);
    if($house == "get_from_host")
        $house = preg_replace("!(.+)\.build-your-house.xe.cx!i", "$1", $_SERVER['HTTP_HOST']) OR die("Fehler: ".$_SERVER['HTTP_HOST']);
    }
   }
   
   
   
   //ADD BOOK
    elseif($_GET['mode'] == 'newmsg'){
//Gästebucheintrag
       }

elseif($_GET['mode'] == 'rank'){
//Rangliste anzeigen
}
else{
//Startseite
}

Das OR die(…); dient der Fehlerbehebung

Tut net :frowning:
Fehler wird keiner angezeigt, ich werde nur immer auf die Startseite weitergeleitet…
Wie gesagt kenne ich mich überhaupt net aus, sonst könnte ich ein wenig mehr herumprobieren…
Trotzdem danke

if(empty($_GET['house'])) header('Location:./'); else { $house = mysql_real_escape_string($_GET['house']); echo $house."<br>"; //Debug if($house == "get_from_host") $house = preg_replace("!(.+)\.build-your-house.xe.cx!i", "$1", $_SERVER['HTTP_HOST']) OR die("Fehler: ".$_SERVER['HTTP_HOST']); echo $house; //Debug exit; //Debug }

soweit kommts gar nicht…müsste theoretisch GET[house] leer sein oder irgendein kryptischer GET[mode]

Dann greift der RewriteCond nicht. Hast du RewriteEngine auf On gesetzt?

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)\.build-your-house.xe.cx$
RewriteRule - index.php?mode=house&house=get_from_host

Ansonsten kannst du noch %{HTTP:HOST} statt %{HTTP_HOST} versuchen

Hatte ich nicht, funktioniert nach vervollständigung auch nicht. das mit HTTP:Host auch net :frowning:
ich weis net ob das normal ist, aber z.b. mgier.build-your-house.xe.cx/?mode=rank funktioniert beispielsweise…

hab den Fehler jetzt, ist aber nicht so tragisch, weil .htaccess eig. gar nicht gebraucht wird :ps:

       $house = preg_replace("!(.+)\.build-your-house.xe.cx!i", "$1", $_SERVER['HTTP_HOST']);
       if(!$house && $_GET['house'])
           $house = mysql_real_escape_string($_GET['house']);
       else
           header('Location:./');

Das ganze ohne .htaccess :slight_smile:

Nope, leider auch net :(…sonst…sooo wichtig ist mir das auch net, der link ist ja dann auch nur zum copy&paste da, da sollten die zwei GET variablen hintendran kein problem sein…
Wenn du willst kann ich dir ja die ganze datei schicken

Mach das morgen, heute kann ich nicht mehr (außerdem hab ich beim Arbeiten mehr Zeit)

Nicht falsch verstehen, ist kein Zwang…

Jetzt hab ich Zeit :ps: