Einzelnen Beitrag anzeigen
  #5  
Alt 10.10.2013, 15:40:41
otto888 otto888 ist offline
Anfänger
 
Registriert seit: Oct 2013
Alter: 60
Beiträge: 4
AW: mod_rewrite + wildcard + Subdomains

OK - Vielen Dank,
habe es nun so gelöst:

htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^main.db.domain.de$ [NC]
RewriteCond %{REQUEST_URI} !^/(css|js|images)(/.*)?
RewriteRule ^ script.php [QSA,L]

1. Rewrite anschalten
2. betrifft nicht main.db.domain.de
3. betrifft nicht Dateien, die sich in den Ordnern "css", "js", "images" befinden
4. Weiterleitung zum Script: script.php

Dort werte ich mittels PHP
$_SERVER["HTTP_HOST"]
aus und verhindere ungültige und ungewollte Aufrufe.
$_SERVER["HTTP_HOST"] zeigt mir z.B.: http://f12345.cn.db.domain.de/

Für alle, die es interessiert:

PHP:
// Weiterleitung falls hier nicht erwünscht
function wech_hier(){
$url_neu = "http://main.db.domain.de"; //falls umgeleitet wird
header ('HTTP/1.1 301 Moved Permanently');
header ("Location: ".$url_neu);
exit();
}

// die ID ohne "p" oder "f" als Array übergeben
// Für jede einzelne Ziffer wird geprüft, ob es eine Zahl ist.
function is_numeric_array($array) {
foreach ($array as $key => $value) {
if (!is_numeric($value)) return false;
}
return true;
}

// Punkte in der Domain zählen
$anz_punkt = substr_count($_SERVER["HTTP_HOST"], "."); //anzahl punkt

$teile = explode(".", $_SERVER["HTTP_HOST"]);

$ai = $teile[0];
$la = $teile[1];
$sd = $teile[2];
$hd = $teile[3];
$su = $teile[4];

// Url falsche eingegeben oder damit rumgespielt
// Bei dieser Konfiguration darf der Aufruf nur 4 Punkte enthalten --> ansonsten ungültig --> Weiterleitung
if ($anz_punkt == "4"){
} else{
wech_hier(); //irgendwas stimmt mit der url nicht Punkte nicht = 4
}

// Kein Teil zwischen den Punkten darf leer sein --> ansonsten ungültig --> Weiterleitung
if (($ai == "")||($la == "")||($sd == "")||($hd == "")||($su == "")){
wech_hier(); // irgendein Teil ist leer!
} else{}

// Die einzelnen Inhalte der URL werden auf gültige Werte geprüft
if ($su == "de"){
} else {
wech_hier(); // su != "de"
}

if ($hd == "domain"){
} else {
wech_hier(); // hd != "domain"
}


if ($sd == "db"){
} else {
wech_hier(); // sd != "db"
}


if (($la == "de")||($la == "cn")){
} else {
wech_hier(); // la nicht erlaubt
}


//Trennen von "p" oder "f" von ID
$id = substr($ai, 1);

//Übergabe von ID als Array an funktion
$id_array = array();
for($i=0; $i<strlen($id); $i++){
$id_array[] = $id{$i};
}

//Übergabe von ID als Array an Funktion und Auswertung
if (is_numeric_array($id_array)) {
} else {
wech_hier(); // id ist keine Zahl
}

So - das funktioniert bei mir.
Nochmal Vielen Dank für die Hilfe und Tipps.

Weiß jetzt nicht, wie man diesen Beitrag als beendet deklariert.
Mit Zitat antworten