Schrift
[thread]2873[/thread]

mod_rewrite: und Formulare



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Heromaster
 2003-08-24 00:02
#29200 #29200
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich übergebe via get-Methode von einem Formular Parameter an ein Script. dazu möchte ich, das die URL im Browser für den Besucher in der Form aussieht: http//..../catalog/manufacturers/22.html statt wie bisher http://.../index.cgi?manufacturers_id=22. Aber irgendwie klappt das net so wie ich will
Code: (dl )
RewriteRule ^index\.cgi\?manufacturers_id=(.*)$ catalog/manufacturers/$1.html [R]

Was mache ich da falsch? Der umgekehrte Weg klappt ohne Probleme
Code: (dl )
RewriteRule ^catalog/manufacturers/(.*)\.html$ index.cgi?manufacturers_id=$1
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
jan10001
 2003-08-24 11:13
#29201 #29201
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Heromaster
 2003-08-24 17:29
#29202 #29202
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Danke erstmal für den Link. Leider bringt er mich auch nicht viel weiter, da auch dort, wie in allen anderen die ich bisher gefunden habe, nur beschrieben steht wie ich aus einer virtuellen HTML-Seite auf ein Script mit Parametern mappe. Das funktioniert ja auch bei mir.
Ich brauche jedoch den umgekehrten Weg, bzw. wie ich die mit GET übermittelten Parameter auf eine virtuelle HTML-Seite mappe.\n\n

<!--EDIT|Heromaster|1061731780-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
jan10001
 2003-08-24 19:14
#29203 #29203
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
Ich brauche jedoch den umgekehrten Weg, bzw. wie ich die mit GET übermittelten Parameter auf eine virtuelle HTML-Seite mappe.

Ich glaube zu ahnen was du willst, aber so was geht nicht.
Du kannst keine Daten in der URL zurückgeben, aber sehr wohl in der HTML Seite.
Aber ehe ich mich jetzt festlege, schreibe doch bitte etwas detailierter was du machen möchtest.

Grüße,
Jan
Heromaster
 2003-08-24 22:56
#29204 #29204
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Also ich habe ein Formular das den Parameter manufacturers_id an das Script index.cgi via GET schickt. Also erscheint im Browser des Benutzers index.cgi?manufacturers_id=17 zum Beispiel. Ich möchte jedoch, das die URL im Browser so erscheint: catalog/manufacturers/17.html
Jedoch scheitert aus irgendwelchen Gründen die RewriteRule, denn statt meinem gewünschten Ergebnis steht im Browser immer noch die URL mit Parameteranhang. Die nächste RewriteRule wäre dann das mappen von catalog/manufacturers/17.html auf index.cgi?manufacturers_id=17. Das soll laut offizieller Doku von mod_rewrite gehen, da dieses Modul alle Regeln auf ein URL anwendet solange kein [L]-Flag erscheint. Also sollte es vom logischen her ja gehen, das ich zuerst auf die virtuelle HTML-Seite mit [R]-Flag mappe und im nächsten Schritt wieder auf das Script, allerdings ohne [R]-Flag.

edit
Zur Verdeutlichung
Code: (dl )
1
2
3
4
1. Regel index.cgi?manufacturers_id=17 --> catalog/manufacturers/17.html mit Rewrite-Flag
Im Browser steht jetzt catalog/manufacturers/17.html
2. Regel catalog/manufacturers/17.html --> index.cgi?manufacturers_id=17 ohne Rewrite-Flag
Im Browser bleibt die virtuelle Seite stehen, intern wird dann aber auf das Script gemappt
\n\n

<!--EDIT|Heromaster|1061751721-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
jan10001
 2003-08-25 00:00
#29205 #29205
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
Also ich habe ein Formular das den Parameter manufacturers_id an das Script index.cgi via GET schickt. Also erscheint im Browser des Benutzers index.cgi?manufacturers_id=17 zum Beispiel. Ich möchte jedoch, das die URL im Browser so erscheint: catalog/manufacturers/17.html

Oh weh, du scheinst den Sinn von mod_rewrite nicht verstanden zu haben. Mit mod_rewrite wird lediglich vorgetäuscht das dynamische Seiten und Verzeichnisse, statisch sind. Es kann nicht die URL im Browser ändern! Das heißt 'catalog/manufacturers/17.html' bleibt so wie es ist und bei 'index.cgi?manufacturers_id=17' ist es genauso.

Mit mod_rewrite kannst du das Formular verzichten, du legst einfach einen Link zu 'catalog/manufacturers/17.html' an, daraus macht mod_rewrite dann 'index.cgi?manufacturers_id=17'. (Das geschieht aber nur Server intern, das heißt der Browser bekommt davon garnichts mit und wenn du Daten zurück gibst, steht immernoch 'catalog/manufacturers/17.html' in der Adresseleiste des Browsers.) Wenn noch mehr Daten zu übertragen sind kannst du ein Formular verwenden und gibst als Ziel 'catalog/manufacturers/17.html' an, allerdings solltest du dann die Daten per Post versenden. Wenn du die Daten per CGI.pm ausliest ist es egal ob es Get oder Post oder beides ist.
Heromaster
 2003-08-25 00:17
#29206 #29206
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,24.08.2003, 22:00]Oh weh, du scheinst den Sinn von mod_rewrite nicht verstanden zu haben. Mit mod_rewrite wird lediglich vorgetäuscht das dynamische Seiten und Verzeichnisse, statisch sind. Es kann nicht die URL im Browser ändern! Das heißt 'catalog/manufacturers/17.html' bleibt so wie es ist und bei 'index.cgi?manufacturers_id=17' ist es genauso.[/quote]
Laut offizieller Apache-Doku leitet der Server nicht nur um, er übergibt die neue URL dem Client sobald man an das Ende der jeweiligen Regel ein [R]-Flag setzt.

Nebenbei: Ich kann nicht auf die get-Methode verzichten, da diese Seiten auch in Suchmaschinen eingetragen werden sollen. Außerdem ist das Script nicht auf meinen Mist gewachsen, ich administriere das Ganze nur und passe es an die Bedürfnisse meines Kunden an. Und mein Kunde hat das Bedürfniss, das die Suchmaschinen solche Seiten in den Index mit aufnehmen und nicht ignorieren. Schlecht fürs Geschäft und so :p
Achso, und mit dem [R]-Flag habe ich bereits ausgetestet, da ich über eine solch definierte Regel von Domain A nach Domain B weiterleite und Domain B in der Anzeige des Browsers erscheint.\n\n

<!--EDIT|Heromaster|1061757285-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
jan10001
 2003-08-25 00:51
#29207 #29207
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Stop, verstehe worauf du hinaus willst, du bist so zusagen der Vermittler! Zwischen der Kundenanwendung und Suchmaschine!
Darüber muß ich erstmal nachdenken. :)\n\n

<!--EDIT|jan10001|1061759553-->
jan
 2003-08-25 11:02
#29208 #29208
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
versuch mal, den redirect absolut zu setzen, d.h. nicht nur catalog/..., sondern http://your.host.here/catalog/...

achso, ja, ich persönlich würde [R,L] benutzen, damit anschließend keine weiteren rewrites mehr ausgeführt werden...\n\n

<!--EDIT|jan|1061794988-->
jan10001
 2003-08-25 15:53
#29209 #29209
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
1. Regel index.cgi?manufacturers_id=17 --> catalog/manufacturers/17.html mit Rewrite-Flag
Im Browser steht jetzt catalog/manufacturers/17.html
2. Regel catalog/manufacturers/17.html --> index.cgi?manufacturers_id=17 ohne Rewrite-Flag

Versuche es mal indem du die Regeln tauschst, also zuerst 2. und dann 1.\n\n

<!--EDIT|jan10001|1061812454-->
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2003-08-24 00:02.