Seite 1 von 1
Mod_rewrite zu Fuss....
Verfasst: Fr 5. Jun 2009, 12:20
von McHubi
Hallöchen,
ich weiß, dass es ein Plugin für das Thema gibt, möchte das Ganze aber "zu Fuss" erledigen. Bis hierhin hab ich's geschafft:
Eingegebene URL:
http://www.meinedomain.de/test
Angezeigte URL:
http://www.meinedomain.de/test
"eigentliche URL":
http://www.meinedomain.de/cms/front_con ... p?idcat=39
In der .htaccess steht dazu folgendes:
Code: Alles auswählen
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteRule ^test$ /cms/front_content.php?idcat=39
Hieran reiße ich mir allerdings langsam die Haare aus

:
Eingegebene URL:
http://www.meinedomain.de/cms/front_con ... p?idcat=39
Angezeigte URL:
http://www.meinedomain.de/test
"eigentliche URL":
http://www.meinedomain.de/cms/front_con ... p?idcat=39
Habe in den Weiten des Webs folgendes gefunden, bekomme es aber trotz Kaffee nicht hin es entsprechend anzupassen
Statt
http://www.meinedomain.de/datei.php?a=1&b=2 soll
http://www.meinedomain.de/datei/1/2/ angezeigt werden.
Code: Alles auswählen
RewriteCond %{REQUEST_URI} datei/(.*)/(.*)/$
RewriteRule ^datei/(.*)/(.*)/$ /datei.php?a=$1&b=$2
Hat einer von euche ne Idee oder bin ich vollkommen auf dem falschen Dampfer?
Schonmal Danke!
Re: Mod_rewrite zu Fuss....
Verfasst: Fr 5. Jun 2009, 15:30
von xmurrix
Hallo McHubi,
mit der Regel
Code: Alles auswählen
RewriteRule /([0-9]*)/$ front_content.php?idcat=$1 [QSA,L]
kannst du z. B. alle Requests die auf "/{irgend_eine_zahl}/" enden, an die front_content.php umschreiben. Dabei spielt es keine Rolle was vorne dran ist, /kategorie/artikel/123/ ist das gleiche wie /was_anderes/123/, da beide auf /123/ enden, und die Regel genau dies überprüft.
Dann wird /ordner/datei/123/ auf front_content.php?idcat=123 umschrieben.
Es gibt auch andere Möglichkeiten wie
Code: Alles auswählen
# /ordner/datei/a/123/ umschreiben auf front_content.php?idart=123
RewriteRule /a/([0-9]*)/$ front_content.php?idart=$1 [QSA,L]
# /ordner/datei/c/123/ umschreiben auf front_content.php?idcat=123
RewriteRule /c/([0-9]*)/$ front_content.php?idcat=$1 [QSA,L]
Da gibt es diverse Möglichkeiten, wichtig ist, dass die URL ein Muster hat , damit daraus per RewriteRule die Kategorieid oder Artikelid ermittelt werden kann.
Gruß
xmurrix
Re: Mod_rewrite zu Fuss....
Verfasst: Mo 8. Jun 2009, 16:28
von McHubi
Hallo xmurrix,
Danke für Deinen Post. Die Frage ist allerdings, ob bei Eingabe einer dynamischen URL eine statische angezeigt werden kann. Bei Eingabe einer statischen wird ja "im Hintergrund" die dynamische abgefragt und dargestellt, es bleibt jedoch die in der Adresszeile eingetipperte statische URL erhalten.
Mir scheint, mit mod_rewrite ist eine Änderung der Adresszeile nicht möglich... Also wenn ich eine dynamische URL eintippe, soll sie in der Adresszeile mit einer statischen ausgetauscht werden...
Grüße

Re: Mod_rewrite zu Fuss....
Verfasst: Mo 8. Jun 2009, 17:27
von xmurrix
McHubi hat geschrieben:...Die Frage ist allerdings, ob bei Eingabe einer dynamischen URL eine statische angezeigt werden kann. Bei Eingabe einer statischen wird ja "im Hintergrund" die dynamische abgefragt und dargestellt, es bleibt jedoch die in der Adresszeile eingetipperte statische URL erhalten.
Mir scheint, mit mod_rewrite ist eine Änderung der Adresszeile nicht möglich... Also wenn ich eine dynamische URL eintippe, soll sie in der Adresszeile mit einer statischen ausgetauscht werden...
Das sollte mit einem Redirect auch möglich sein
Code: Alles auswählen
RewriteRule /front_content.php?idart=([0-9]*)$ http://hostname/a/$1 [R=301,NC,L]
Getestet habe ich das jetzt nicht, aber so in der Art sollte es klappen. Das macht natürlich nur dann Sinn, wenn du nicht mit Kategorie-/Artikelaliasen arbeitest, das kriegst in der .htaccess nicht raus.
Gruß
xmurrix
Re: Mod_rewrite zu Fuss....
Verfasst: Di 9. Jun 2009, 14:08
von McHubi
Hallo,
Bin wohl zu doof dafür
habe die .htaccess im root-Verzeichnis liegen und alles mögliche an Kombinationen durch und nix führt dazu, dass bei Eingabe in der Adresszeile oder durch "Eingabe" per Linkanklicken
http://www.meinedomain.de/cms/front_con ... p?idcat=48 durch
http://www.meinedomain.de/cms/test ersetzt wird.
Mal einige gescheiterte Varianten:
Code: Alles auswählen
RewriteRule /front_content.php?idcat=([0-9]*)$ http://hostname/a/$1 [R=301,NC,L]
RewriteRule /front_content.php?idcat=48$ http://hostname/a/$1 [R=301,NC,L]
RewriteRule /front_content.php?idcat=48$ http://www.meinedomain.de/a/$1 [R=301,NC,L]
RewriteRule /front_content.php?idcat=48$ http://www.meinedomain.de/cms/test [R=301,NC,L]
RewriteRule www.meinedomain.de/cms/front_content.php?idcat=48$ www.meinedomain.de/cms/test [R=301,NC,L]
RewriteRule www.meinedomain.de/cms/front_content.php?idcat=48$ http://www.meinedomain.de/cms/test [R=301,NC,L]
RewriteRule http://www.meinedomain.de/cms/front_content.php?idcat=48$ http://www.meinedomain.de/cms/test [R=301,NC,L]
... und so weiter und so fort ...
Dabei ist es wurscht, ob nach RewriteRule ein ^ eingefügt ist oder nicht, in der Adresszeile bleibt konsequent
http://www.meinedomain.de/cms/front_con ... p?idcat=48 stehen.
Hab anscheinend eine etwas zu naive Vorstellung davon gehabt, dass man einfach in die .htaccess reinschreiben kann: "Wenn URL-a eingegeben oder per Link übergeben wird rufe sie ruhig auf aber ersetze in der Adresszeile die URL-a mit URL-b."
Grüße und bis denne...