Lesbare URLs verwenden

Basierend auf den Artikel “String in lesbare URL umwandeln“, welcher die Möglichkeit der Formatierung einer URL erklärt, soll hier nun die Verwendung solcher lesbaren URLs dargestellt werden.

Es sollte im allgemeinen klar sein, das ein Link wie http://domain.tld/hier-gehts-weiter ohne Vorbereitung direkt zu einer Fehlermeldung führt, es sei denn, hier-gehts-weiter ist ein Verzeichnis, in dem eine Datei namens index.(php|html) liegt. Dies wäre dann allerdings ein echter Zufallstreffer Smilie: :-)

Also, wie funktioniert das nun eigentlich?

Dazu muss ich etwas weiter ausholen. Benötigt wird hierbei ein Apache-Server mit aktiviertem mod_rewrite-Modul. Dieses Modul ermöglicht es, so genannte Rewrite-Regeln zu erstellen, welche dazu dienen bestimmte oder auch alle URLs umzuleiten.

Also, eigentlich ganz einfach, oder?

Wie funktionieren diese Rewrite-Regeln?

Genau wie eine if()-Bedingung bei PHP. Wenn eine vorher definierte Bedingung eintritt, dann mach was. Dabei kann die Bedingung auch Ausnahmen enthalten. Also wenn Bedingung A eintritt, aber Ausnahme B und C dabei sind, dann ignoriere die Regel – um es mal etwas sehr vereinfacht zu erläutern.

Wo werden solche Regeln erstellt?

In einer Datei namens .htaccess im Serverroot. Dort werden unter anderem die Rewrite-Regeln definiert.

Wie sieht das nun aus?

Ok, lange Rede, gar kein Sinn Smilie: :-)
Eine Art “universeller” Rewrite – mit einigen Erklärungen – für lesbare URLs sieht dann folgendermaßen aus.

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
##
 # URL Rewrite
 ##
<ifmodule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /

    ##
     # Domain formatieren
     # http://domain.tld ist gewählt (also ohne www.)
     ##
    RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
    RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

    ##
     # workaround for HTTP authorization
     # in CGI environment
     ##
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    ##
     # always send 404 on missing files in these folders
     ##
    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

    ##
     # Rewrite
     # Verhindern das existierende Dateien und Links maskiert werden
     ##
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    ##
     # Alles andre auf die index.php leiten.
     # Kann dann über die PHP-Variable "$_SERVER['REDIRECT_URL']" abgefragt werden.
     # Beispiel:
     #          http://domain.tld/dies_ist/ein_beispiel
     #          Inhalt der $_SERVER['REDIRECT_URL']:
     #              => dies_ist/ein_beispiel
     ##
    RewriteRule . /index.php [L]
</ifmodule>
Werbung

WISE SEO Tools

Über H.-Peter Pfeufer

Ich bin Webentwickler/ -programmierer aus Leidenschaft, WordPressbegeistert und ab und an auch mal ein netter Mensch.
Vor allen schreibe ich über alles was mit den Themen Webentwicklung/ -programmierung und WordPress zu tun hat. Nebenher auch mal einige Gedanken zu allgemeineren Themen.

Kategorie(n): Tipps und Tricks
Tags: , , , ,
Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

 

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>