Voraussetzung mod_rewrite ist vorhanden und aktiv;
Warum Überhaupt der Aufwand?
ganz einfach, die Sumas mögen eher Url folgenden Formates:
www.domain.de/datei.htm
bei php sieht es meist so aus:
www.domain.de/datei.php?a=1&b=2
.htaccess
Das [L] kommt hinter der letzten Anweisung in der .htaccess getrennt mit ein Leerschritt, ist optinal, und gibt an das die rules zu Ende sind.
www.domain.de/datei1-2.htm
der Aufruf dieser URL bringt jetzt das selbe zu Tage wie:
www.domain.de/datei.php?a=1&b=2
Im Quellcode müssen die Links jetzt halt noch angepasst werden das sie nach der php Abarbeitung so aussehen datei1-2.htm.
Beispiel:
Oder Ihr wollt statt
www.domain.de/datei.php?a=1&b=2
www.domain.de/datei/1/2/
.htaccess
Fehlerquellen
- .htaccess liegt im falschen Ordner
- 2 .htacces vorhanden, 1x root und 1x in unterordner wo die Datei raus aufgerufen wird.
- Die Pfade stimmen nicht, kommt öfter vor
- mod_rewrite nicht aktiv (siehe phpinfo)
- Namenskonflikte
- manche hoster benötigen absolute urls in der rule
- Datei Endung .htm und .html beachten
- Rangfolge in der .htacces bei gleichen dateinamen nicht beachtet.
Beispiel:
Bei weiteren Fragen, die Suchfunktion bemühen, es gibt hier noch ein extrem grosser Beitrag von Abraxax darüber.
Warum Überhaupt der Aufwand?
ganz einfach, die Sumas mögen eher Url folgenden Formates:
www.domain.de/datei.htm
bei php sieht es meist so aus:
www.domain.de/datei.php?a=1&b=2
.htaccess
Code:
#muss ins root Verzeichnis RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 [L]
www.domain.de/datei1-2.htm
der Aufruf dieser URL bringt jetzt das selbe zu Tage wie:
www.domain.de/datei.php?a=1&b=2
Im Quellcode müssen die Links jetzt halt noch angepasst werden das sie nach der php Abarbeitung so aussehen datei1-2.htm.
Beispiel:
PHP Code:
//Normal
echo 'www.domain.de/datei.php?a='.$a_id.'&b='.$b_id;
//nach Anpassung
echo 'www.domain.de/datei'.$a_id.'-'.$b_id.'.htm';
Oder Ihr wollt statt
www.domain.de/datei.php?a=1&b=2
www.domain.de/datei/1/2/
.htaccess
Code:
RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteCond %{REQUEST_URI} datei/(.*)/(.*)/$ RewriteRule datei/(.*)/(.*)/$ /datei.php?a=$1&b=$2
Fehlerquellen
- .htaccess liegt im falschen Ordner
- 2 .htacces vorhanden, 1x root und 1x in unterordner wo die Datei raus aufgerufen wird.
- Die Pfade stimmen nicht, kommt öfter vor
- mod_rewrite nicht aktiv (siehe phpinfo)
- Namenskonflikte
- manche hoster benötigen absolute urls in der rule
- Datei Endung .htm und .html beachten
- Rangfolge in der .htacces bei gleichen dateinamen nicht beachtet.
Beispiel:
Code:
# Falsch RewriteRule datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 RewriteRule datei(.*)-(.*)-(.*).htm$ /datei.php?a=$1&b=$2&c=$3 # Richtig RewriteRule datei(.*)-(.*)-(.*).htm$ /datei.php?a=$1&b=$2&c=$3 RewriteRule datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2
Bei weiteren Fragen, die Suchfunktion bemühen, es gibt hier noch ein extrem grosser Beitrag von Abraxax darüber.
EDIT:
NACHTRAG: hab noch zwei Fehlerquellen hinzugefügt.
Link zum Apache - mod_rewrite doc
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html
Comment