mod_rewrite
schwilli
- sonstiges
Hallo,
möchte meine dynamischen Seite suchmaschinen- und userfreundlich machen.
Statt http://foo.bar/script.php?das=1&sind=2&vars=3
hätte ich gerne http://foo.bar/1/2/3
mein Lösungsansatz mit mod_rewrite:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]*)/?([a-z]*)/?(.*)$ index.php?das=$1&sind=$2&vars=$3
ergibt folgendes Problem:
sobald $das und $sind definiert ist (foo.bar/1/2),
wird $das als RewriteBase definiert und bei foo.bar/1/2/3
wird $das/$sind als RewriteBase definiert.
wo liegt mein Fehler und wie kann ich diesen Fehler beheben?
hi,
denk mal drüber nach ob du wirklich so eine ordnerlink-struktur machen willst, da du dann alle urls und bilderpfade 'zurücksetzen' mußt (der browser macht dann aus src="bild1" -> src="foo.bar/1/2/3/bild1").
also mir war das bei größeren projekten etwas zu umständlich und unübersichtlich.
mach doch 'einfache' html-urls wo du die paramter mit kommas oder so trennst....foobar,1,2,3.html, klappt wunderbar mit allen suchmaschinen..
gruß
rob
hi,
denk mal drüber nach ob du wirklich so eine ordnerlink-struktur machen willst, da du dann alle urls und bilderpfade 'zurücksetzen' mußt (der browser macht dann aus src="bild1" -> src="foo.bar/1/2/3/bild1").
also mir war das bei größeren projekten etwas zu umständlich und unübersichtlich.
mach doch 'einfache' html-urls wo du die paramter mit kommas oder so trennst....foobar,1,2,3.html, klappt wunderbar mit allen suchmaschinen..gruß
rob
Danke für deinen Tipp.
Ist wohl wirklich die beste, vor allem die einfachste Lösung.
Da war ich zu sehr auf die Verzeichnis-Struktur fixiert.
Manchmal sieht man halt den Wald vor lauter Bäumen nicht.
grüße
schwilli
Hallo schwilli,
Statt http://foo.bar/script.php?das=1&sind=2&vars=3
hätte ich gerne http://foo.bar/1/2/3
schöne idee.
RewriteRule ^([a-z]*)/?([a-z]*)/?(.*)$ index.php?das=$1&sind=$2&vars=$3
Hmmm... willst du auch, dass
/1/2
/script.php?das=1&sind=2
wird?
na gut, also:
^([a-z]*)/?([a-z]*)/?(.*)$
findet beliebige kleine Buchstaben, danach evv. ein / oder auch nicht, dann nochmal beliebige kleine buchstaben, dann nochmal ein / oder auch nicht, und dann alle beliebigen zeichen.
Kleine Frage: Was soll das "/?"? Wenn du willst, dass auch ein Aufruf von
/verzeichnis
geht, also dass
/verzeichnis
/verzeichnis/
/verzeichnis/verzeichnis
/verzeichnis/verzeichnis/
/verzeichnis/verzeichnis/14255abc....
geht, müsstest du das so schreiben:
^([a-z]+)(?:/?|([a-z]+)(?:/?|(.+)))$
das trifft das gesagte. Probier dir den Pattern mal im kopf aus, ich muss gleich weg, deswegen habe ich keine Zeit, ihn dir umfangreicher zu "erklären"...
Hoffe, es hat geholfen,
WAuWau