Sprechende Links! Aber wie?
Anzeige Hier werben
Grundkenntnisse in Ordnerstruktur, PHP, etc. setzte ich hier erstmal voraus, abändern und verfeinern darf ja jeder diesen Artikel.
Als 1. benötigt Ihr in eurem Rootverzeichnis wo eure Dokumente liegen eine .htaccess und eine index.php Datei.
Die .htaccess regelt es erstmal das alle Anfragen welche an die Seite gestellt werden an die index.php weitergeleitet werden. Also egal ob www.domain.de/kontakt oder www.domain.de/wurst aufgerufen wird, es wird immer die index.php geladen.
1 2 3 4 | RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule !\.(js|ico|gif|jpg|jpeg|png|css|pdf)$ index.php [NC,QSA,L]
|
1 2 3 4 5 6 7 8 9 10 | <?php
// auslesen was aufgerufen wurde
$sRequestUri = $_SERVER['REQUEST_URI'];
// String in seine Einzelteile zerlegen
$aRequestSplitted = array_filter(explode('/', $sRequestUri));
// Einzelteilen passende Variablen zuweisen
$sModule = $aRequestSplitted[1];
$sCategory = $aRequestSplitted[2];
|
Mit dieser Variante habt Ihr die Möglichkeit das umleiten ganz nach euren Bedürfnissen per PHP anzupassen.
Wenn Ihr eine feste Regel festlegen wollt gibt es noch eine 2. Variante wie man sprechende URLs erstellen kann.
1
2
3
4
5 | RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([^/]+)$ index.php?gallery=$1 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?module=$1&category=$2 [QSA,L]
|
1 2 3 4 | <?php
// Einzelteilen passende Variablen zuweisen
$sModule = $_GET['module'];
$sCategory = $_GET['category'];
|
Die 1. Variante ist in der Art besser, da Ihr dort per PHP if-Abfragen noch abwegen könnt welche Variable wem zugewiesen wird.
Dieser Artikel bringt so erstmal nur einen kleinen Einblick in das Thema "sprechende URLs" und soll den Anstoß zu einem großen Artikel geben.
Ich hoffe das sich ganz viele Leute an diesem Thema beteiligen werden und es ein richtig ausführlicher Artikel wird.
Beispiel für das 1. Verfahren mit einer Klasse gekoppelt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <?php
$oSpeekingLink = new SpeekingLink($_SERVER['REQUEST_URI']);
$oSpeekingLink->module = 1;
$oSpeekingLink->category = 2;
echo $oSpeekingLink->module;
echo $oSpeekingLink->category;
/**
* Diese Klasse dient zum verarbeiten von "sprechenden Links"
*
* @author Christian Kehres
*/
class SpeekingLink
{
private $aRequestsSplitted = array();
private $aRequests = array();
/**
* Diese Funktion liest den Request ein und zerteilt ihn um ihn dann in ein Array zu speichern
*
* @param $sRequestUri
*
* @example $oSpeekingLink = new SpeekingLink($_SERVER['REQUEST_URI']);
*/
public function __construct($sRequestUri)
{
$this->aRequestsSplitted = array_filter(explode('/', $sRequestUri));
}
/**
* Diese Funktion weist einer gewünschten Variable einen gewünschten Teil aus dem Request zu
*
* @param $sName Name der Variable
* @param $iKey Key aus dem Array mit dem Wert dem die Variable zugewiesen werden soll
*
* @example $oSpeekingLink->module = 1;
*/
private function __set($sName, $iKey)
{
if (is_numeric($iKey)) {
$this->aRequests[$sName] = $this->aRequestsSplitted[$iKey];
}
}
/**
* Diese Funktion gibt den Wert einer gewünschten Variable aus
*
* @param $sName
* @return mixed
*
* @example echo $oSpeekingLink->module;
*/
private function __get($sName)
{
if (isset($sName)) {
return $this->aRequests[$sName];
}
}
}
|
Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 3 Personen an der Seite "Sprechende Links! Aber wie?" mitgewirkt.
Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Sprechende Links! Aber wie?" hier bearbeiten.
-
Seit Mitte 2008 ausgebildeter Mediengestalter (Mediengestalter für Digital- und Printmedien FR Medienoperating non-print); 01.10.2008 => Inhaber der webtischlerei.de. Spezialisiert auf Webseitenumsetzung mit dem CMS Contenido. - XING
-
graphic, motion & web design - kernreaktor - kinderturnen
-
Ich bin Oberstufenschüler aus Hessen, 18 Jahre alt und mache einen Aushilfsjob bei der Brot und Spiele GmbH als PHP Entwickler.


Größere Probleme
Ich stoße auf größere Probleme, wenn es um die Einbindung von Flash Elementen geht. Zwar kann ich auch swf-Dateien von der Regel ausschliessen, das hilft mir aber nix, wenn meine SWF eine XML z.B. vom Server lesen soll, bzw. ein FLV einbinden soll... Problem: SWF=Clientbasiert
Hier müsste ich mit absoluten URLs arbeiten, das macht die Sache aber unendlich langsam...
Jmd. nen Tip?
Informativ
Ich habe bisher mit der zweiten Methode rumgespielt, also die die URLs und sprich Variablem vom Server her umzumodeln. Problematisch wird's wenn ausnamsweise mal kein Apache Server dahinter steht...
Ansonsten kenn ich das vom Zend Framework oder Wordpress, die nach der ersten Methode verfahren. War interessant zu lesen wie sowas wirklich funktioniert, grad weil's ja einfacher ist als ich dachte...
Was wird mit der Klasse? Ohne Praxis-Beispiele kann ich damit leider nix anfangen... Cool währe ein simples MVC-Fundament, um die Funktionsweise von Action-Controllern und Request-Objekte zu verstehen.
Prefix-URLs?
sehr simpel
Ist natürlich sehr simpel gehalten... Am sinnvollsten ist natürlich, wenn man z.B.: nach MVC entwickelt und dafür eine Klasse baut, die dann das ganze entsprechend parst und die richtige Methode aufruft, aber auch entsprechende Varianten zulässt, sodass erweiterte Variationen möglich sind, Beispiel Prefix URLs
Re: sehr simpel
genau sowas mein ich :) jeder wirft mal seine ideen rein und tippt es vll gleich in den artikel, so das später jeder das für sich passende verfahren in diesem artikel finden kann