.htaccess

Hallo,

ich möchte Links so umformen:
keyword.benutzername.bplaced.net
daraus wird:
benutzername.bplaced.net/irgendeinedatei.php?parameter=keyword

Der Benutzer soll aber nur den ersten Link sehen.

Wie geht sowas?

Vielen Dank!

Hallo,

ich stand bei meiner Seite vor einer ähnlichen Fragestellung, allerdings wollte ich den variablen Teil hinter der Stamm-URL haben. Also z.B. so: benutzername.bplaced.net/keyword

Nach etwas Googlen habe ich festgestellt das es hierfür wohl keinen direkten Weg gibt, jedoch mit etwas Zaubern das durchaus möglich ist :wink:

Ich habe meinen Code mal etwas für deine Fragestellung umgeschrieben.
Ich denke das sollte so funktionieren - getestet habe ich es jedoch nicht.

Vorab jedoch, ich beschäftige mich erst seit etwas über 2 Monaten rein als Hobby mit PHP.
Also eine bitte an die alten Hasen nicht allzu streng zu sein wenn der Code noch Optimierungsbedarf besitzt :slight_smile:

1.) .htaccess
Hier musst du zuerst dem Server beibringen das alle Anfragen an deine Seite an ein zentrales PHP-Skript geleitet werden.

RewriteEngine on RewriteRule !.(gif|jpg|png|css|xml)$ /users/DeinBenutzername/www/zentrale.php

Wie du siehst, gilt die Regel nicht für Anfragen mit den Endungen .gif, .jpg, .png, .css, .xml
Diese Anfragen werden auch weiterhin ganz normal behandelt.

2.) Zentrales PHP-Skript
Hier steuerst du dann welche Seite konkret aufgerufen werden soll.

[code]<?php

// 1. Prüfen ob die URI als echtes Dokument existiert.
$uriarray = array_map(‘trim’,explode(".php",$_SERVER[‘REQUEST_URI’]));
if ($uriarray[0] == $_SERVER[‘REQUEST_URI’]) {
$request = $_SERVER[‘REQUEST_URI’];
}
else {
$request = $uriarray[0].".php";
}

if (file_exists($_SERVER[‘DOCUMENT_ROOT’].$request)
and ($_SERVER[‘SCRIPT_FILENAME’] != $_SERVER[‘DOCUMENT_ROOT’].$request)
and ($request != “/”)) {
$url = $request;
include($_SERVER[‘DOCUMENT_ROOT’].$url);
exit();
} [/code]

Zuerst einmal kümmerst du dich hier darum, das Aufrufe auf ein bestehendes Dokument auch direkt durchgeführt werden. Also z.B. soll bei benutzername.bplaced.net/hallowelt.php direkt das hallowelt-Skript geladen werden.
Aber auch bei benutzername.bplaced.net/hallowelt.php?parameter=keyword würde der Aufruf direkt erfolgen.

Ich mache auf meiner Seite alles über PHP-Skripte.
Ggf. musst du den Code hier noch z.B. für HTML Direktaufrufe erweitern.

[code]// 2. Prüfen auf dynamischen Inhalt.
$url = strip_tags($_SERVER[‘HTTP_HOST’]);
$url_array = explode(".",$url);
$anzahl = count($url_array);
$anzahlschleife = 1;
while ($anzahlschleife <= $anzahl) {
if ($url_array[0] == “”) {
array_shift($url_array);
}
else {
break;
}
$anzahlschleife = $anzahlschleife + 1;
}

if (empty($url_array) or $url_array[0] == “DeinBenutzername”) { // keine weitere Eingabe, Index laden
include($_SERVER[‘DOCUMENT_ROOT’]."/index.php");
exit();
} [/code]

Nun ermittelst du dir das Keyword welches vor deine Stamm-URL eingegeben wurde.
Das steht dann im Element 0 des Array. Sollte dort dein Benutzername zu finden sein oder das Array gar leer sein, hat der User nichts weiter eingegeben und du kannst deine normale Startseite laden.

// 3. Keyword setzen und PHP-Skript aufrufen $keyword = $url_array[0]; include($_SERVER['DOCUMENT_ROOT']."/irgendeinedatei.php"); exit(); ?>

Ansonsten setzt du hier nun deine Variable Keyword und bindest dein Skript mit include ein.
Bereits definierte Variablen bleiben dadurch ja bestehen. Heißt, du kannst in deinem Skript irgendeinedatei.php auch auf die Variable $keyword zugreifen und darauf reagieren.

Ich hoffe das hilft dir etwas weiter …

  • stepgo