Alexander Foken: Domain aus URL filtern

Beitrag lesen

Moin Moin !

ich find den Host nur sekundär interessant,
weil es imho identisch ist, ob die Leute von
www.google.de oder nur http://google.de kommen.

es ist purer Zufall, wenn dahinter der selbe Server steckt. Ein "www.xyz.tld" kann an einem völlig anderen Ende der Welt stehen als ein "xyz.tld", und selbstverständlich auch völlig andere Ergebnisse liefern.

Im Prinzip hast Du völlig recht, hinter http://www.example.com und http://example.com können zwei unterschiedliche Server mit einer Entfernung von 20.000 km Luftlinie stehen, die völlig unterschiedlichen Content ausliefern. Aber mal ehrlich ? Wie oft kommt das vor ? Meistens ist http://example.com identisch mit http://www.example.com, oder ersterer liefert eine Umleitung auf letzteren. Slashdot macht's natürlich andersrum.

Ich habe für das Problem zwei Ansätze:

Wenn der Servername (Port, Protokoll und Username seien schon entfernt) mit "www.", "w3." oder "web." anfängt, genau diesen Ansatz streichen. Damit hat man diese Alias- und Umleit-Aktionen sicherlich zu 95% erschlagen. www.example.co.uk würde zu example.co.ok, auch kein Problem.

$servername=~s/^(www|w3|web).//i;

Andere Geschichte: Top Level Domains mit Unterstrukturen kennen und gesondert behandeln, sprich: Bei *.uk, *.tw, *.jp und so weiter drei Teile der Domain einsammeln, sonst nur zwei.

my $interesting_domain_part;
my @parts=split /./,lc $servername;
my %structurised_tlds=map { $_ => 1 } qw(uk tw jp und-noch-mehr);

if ($structurised_tlds{$parts[-1]}) {
  $interesting_domain_part=join('.',$parts[-3],$parts[-2],$parts[-1]);
} else {
  $interesting_domain_part=join('.',$parts[-2],$parts[-1]);
}

Beide Verfahren lassen sich natürlich kombinieren.

Alexander