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 :-)
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>
Artikel / Seite weiterempfehlen

Schreibe einen Kommentar

Ihre Email-Adresse wird nicht veröffentlicht. Pflichtfelder sind durch * markiert.

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>