marc75
22-10-2004, 14:04
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
#muss ins root Verzeichnis
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 [L]
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:
//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
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:
# 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.
NACHTRAG: hab noch zwei Fehlerquellen hinzugefügt.
Link zum Apache - mod_rewrite doc
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html
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
#muss ins root Verzeichnis
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^datei(.*)-(.*).htm$ /datei.php?a=$1&b=$2 [L]
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:
//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
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:
# 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.
NACHTRAG: hab noch zwei Fehlerquellen hinzugefügt.
Link zum Apache - mod_rewrite doc
http://httpd.apache.org/docs-2.0/mod/mod_rewrite.html
