Freigeisterhaus Foren-Übersicht
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   NutzungsbedingungenNutzungsbedingungen   BenutzergruppenBenutzergruppen   LinksLinks   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Das gegenteil von mod_rewrite

 
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> DAU's Paradise
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837222) Verfasst am: 11.10.2007, 13:34    Titel: Das gegenteil von mod_rewrite Antworten mit Zitat

Tja, davon scheint bei den htaccess-Codern auch noch keiner was gehört zu haben:

Die mod_rewrite wird normalerweise dazu benutzt, Fragezeichen-URLs wie
http://www.beispiel.com/datei.php?param1=xy&param2=yx
in statische URLs wie
http://www.beispiel.com/xyyx.html
umzuwandeln, bzw. dies vorzutäuschen.

Nun brauche ich aber genau das Gegenteil: Ich muss Anfragen an eine Fragezeichen-URL auf eine bestehende statische URL umleiten.

Gibt es hier eine mod_rewrite-Lösung bzw. kennt jemand eine?
Einfaches Austauschen der Werte funktioniert nicht, da der Server Werte nach dem ? beim rewrite zu ignorieren scheint, auch wenn sie explizit angegeben wurden.

Hier der Code, den ich verwende und der NICHT funktioniert:
Code:
RewriteEngine On
RewriteRule ^review.php?titel=(.*)$ kritiken/krtk-$1.html

_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837232) Verfasst am: 11.10.2007, 13:55    Titel: Re: Das gegenteil von mod_rewrite Antworten mit Zitat

Shadaik hat folgendes geschrieben:
Nun brauche ich aber genau das Gegenteil: Ich muss Anfragen an eine Fragezeichen-URL auf eine bestehende statische URL umleiten.


Du willst ne statische URL in eine Fragezeichen-URL umwandeln lassen?

Habe ich dies nun richtig verstanden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837234) Verfasst am: 11.10.2007, 13:58    Titel: Antworten mit Zitat

Naja, ich würde die statischen schon ganz gerne erhalten, die Fragezeichen-URLs sind nur für ein Programm, das meine Spielewertungen als Teil eines Meta-Wertungssystems (Errechnen einer Durchschnittswertung aus vielen Einzelwertungen) einbindet.

Im Notfall werde ich eine php mit mehreren GET und header() basteln müssen, das sollte auch gehen.
Eine globale Lösung mit RewriteRule wäre aber besser, da schneller.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837240) Verfasst am: 11.10.2007, 14:07    Titel: Antworten mit Zitat

Ich bin etwas irritiert, weil dein Codeschnipsel, doch eigentlich von Fragezeichen zu statisch macht.

Shadaik hat folgendes geschrieben:
Hier der Code, den ich verwende und der NICHT funktioniert:
Code:
RewriteEngine On
RewriteRule ^review.php?titel=(.*)$ kritiken/krtk-$1.html


Wolltest du es nicht andersherum?

Code:
RewriteEngine On
RewriteRule ^kritiken/krtk-(.*).html$ review.php?titel=$1


Oder verstehe ich dich nicht ganz?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837245) Verfasst am: 11.10.2007, 14:17    Titel: Antworten mit Zitat

Okay, in zwei Schritten:

1. Besucher kommt über einen Fragezeichenlink von der anderen Seite, zum beispiel
Code:
http://www.spilmkritiken.de/review.php?metroid_prime

(RewriteRule greift)

2. Besucher wird auf die entsprechende statische Webseite umgeleitet, bei diesem Beispiel also auf
http://www.spilmkritiken.de/kritiken/krtk-metroid_prime.html

Die Fragezeichen-URL führt ins Nirwana (review.php existiert nicht), die normale URL existiert und deren Inhalt soll dem Besucher angezeigt werden.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837248) Verfasst am: 11.10.2007, 14:21    Titel: Antworten mit Zitat

Hat bei mir nachher auch klick gemacht.

Versuch mal:
Code:
RewriteRule ^review\.php\?titel=(.*)$ kritiken/krtk-$1.html


http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

Zitat:
? : Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht, d. h. der Ausdruck kommt null- oder einmal vor. (Dies entspricht {0,1} )


Zitat:
\ hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf. Beispielsweise lässt der Ausdruck „(A\*)+“ die Zeichenketten „A*“, „A*A*“ etc. zu. Auf diese Weise lässt sich auch ein Punkt „.“ mit „\.“ suchen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837252) Verfasst am: 11.10.2007, 14:27    Titel: Antworten mit Zitat

Apeiron hat folgendes geschrieben:
Hat bei mir nachher auch klick gemacht.

Versuch mal:
Code:
RewriteRule ^review\.php\?titel=(.*)$ kritiken/krtk-$1.html


http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

Zitat:
? : Der voranstehende Ausdruck ist optional, er kann einmal vorkommen, muss es aber nicht, d. h. der Ausdruck kommt null- oder einmal vor. (Dies entspricht {0,1} )


Zitat:
\ hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf. Beispielsweise lässt der Ausdruck „(A\*)+“ die Zeichenketten „A*“, „A*A*“ etc. zu. Auf diese Weise lässt sich auch ein Punkt „.“ mit „\.“ suchen.

*andiestirnklatsch* Natürlich!

Das zum Thema Wald und Bäume.

Vielen Dank!

edit: Doch nicht, das Fragezeichen wird auch weiterhin ignoriert und Firefox versucht, die review.php aufzurufen. Ich vermute, es liegt daran, dass Fragezeichen grundsätzlich zur Parameterweitergabe gedacht sind.
Ich werde also ein entsprechendes php-Script verfassen müssen.

Danke jedenfalls. Den Versuch war's wert.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837270) Verfasst am: 11.10.2007, 15:29    Titel: Antworten mit Zitat

Klappt vielleicht:
Code:
RewriteRule ^review\.php\?(.*)$ kritiken/krtk-$1.html


Wenn dein Link http://www.spilmkritiken.de/review.php?metroid_prime heißt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837319) Verfasst am: 11.10.2007, 17:11    Titel: Antworten mit Zitat

das leitet zu
Code:
http://www.spilmkritiken.de/kritiken/krtk-titel=metroid_prime.html

was noch nichtmal ein gültiger dateiname ist.

Ein Kollege konnte das Problem inzwischen nachstellen, es liegt tatsächlich am Fragezeichen. Er meint, da hätte ich einen ziemlich dicken Bug entdeckt.

Sogar eine Angabe wie (skizziert) "leite index.htm.+ zu index.php" funktioniert eigentlich, wie sie sollte (spich, alle Eingaben mit index.htm(beliebigeZeichenfolgebeliebigerLänge) leiten zu index.php um, es sei denn, in der Zeichenfolge befindet sich ein Fragezeichen.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837353) Verfasst am: 11.10.2007, 18:10    Titel: Antworten mit Zitat

Ich habe jetzt diese php erstellt, mal schaun, ob's funktioniert:

Code:

header("Location: http://www.spilmkritiken.de/kritiken/krtk-"$_GET["titel"]".html");
exit;

Irgendwelche Meinungen bzw. Warnungen? zwinkern

edit
das ergibt das hier:
Zitat:
Parse error: syntax error, unexpected T_VARIABLE in [...]review.php on line 2

Wer mag übersetzen? Darf ich GET nicht in header einsetzen?
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837361) Verfasst am: 11.10.2007, 18:25    Titel: Antworten mit Zitat

Und hier ist meine funktionierende Lösung:
Code:
$name = $_GET['titel'];
header("Location: http://www.spilmkritiken.de/kritiken/krtk-$name.html");
exit;


Gestern konnte ich noch kein php jenseits von inlude() und echo.

Ich bin stolz auf mich. Cool
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
disillusioned
sinnlos, gottlos, ahnungslos



Anmeldungsdatum: 12.07.2007
Beiträge: 109
Wohnort: Hessen

Beitrag(#837364) Verfasst am: 11.10.2007, 18:31    Titel: Antworten mit Zitat

Ist zwar schon gelöst, also nur nebenbei erwähnt: Der Fehler bei deiner ersten Version war der fehlende '.', der bei php zum Verketten von Strings dient. Würde dann also so lauten:

Code:

header("Location: http://www.spilmkritiken.de/kritiken/krtk-".$_GET["titel"].".html");

_________________
"Die mystischen Erklärungen gelten für tief; die Wahrheit ist, dass sie noch nicht einmal oberflächlich sind." - Friedrich Nietzsche
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837369) Verfasst am: 11.10.2007, 18:39    Titel: Antworten mit Zitat

disillusioned hat folgendes geschrieben:
Ist zwar schon gelöst[...]

Ich danke dir trotzdem, lerne ich doch gerne was über solche Dinge.

Jetzt hab ich seit gestern erst mit .htaccess und dann damit gebastelt, viel probiert, viel gelesen und schließlich Erfolg gehabt.

Schöne Sache, das, sowas hatte ich das letzte Mal auf nem Commodore. Seitdem hab ich mich auch schon nicht mehr an Programmiersprachen gesetzt, nur Markup-Sprachen
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837415) Verfasst am: 11.10.2007, 19:47    Titel: Antworten mit Zitat

Ich habs anscheinend jetzt hinbekommen:
Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^.*titel=(.*)
RewriteRule ^review\.php$ kritiken/krtk-%1.html


Aus der URL http://blabla/review.php?titel=metroid_prime wird http://blabla/kritiken/krtk-metroid_prime.html

Sei mal so nett und teste es mal bei dir, bei mir geht es.

Wenn es klappt, erklär ich es auch kurz.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837771) Verfasst am: 12.10.2007, 10:43    Titel: Antworten mit Zitat

Jetzt hab ich natürlich alles schon eingebunden (und php und .htaccess lassen sich leider nicht offline testen) und du weisst ja: "Never change a running system". zwinkern

Ich nehme an, der QUERY_STRING teilt dem Server explizit mit, nach den Inhalten der Fragezeichen Ausschau zu halten?
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837844) Verfasst am: 12.10.2007, 12:49    Titel: Antworten mit Zitat

RewriteCond ist eine Bedingung und besagt, dass die folgende RewriteRule nur dann ausgeführt wird, wenn im Query String 'titel=' vorkommt, dabei wird der String nach 'titel=' in eine Variable gespeichert.

Die RewriteRule ersetzt dann 'review.php' mit dem String 'kritiken/krtk-%1.html', wobei %1 die Variable aus der RewriteCond repräsentiert.

Und es ist kein Bug, dass RewriteRule ab dem Fragezeichen nicht weiterschaut, sondern so beabsichtigt, denn der Query String soll nicht beartbeitet werden, weshalb es auch sofort beim ersten Auftreten dieses, also das Fragezeichen, die ganze Sache abbricht.

Ich musste auch erstmal ne Zeit googeln, wollte es aber selber auch wissen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#837936) Verfasst am: 12.10.2007, 14:19    Titel: Antworten mit Zitat

Lustigerweise ist grade jemand im Abakus-Forum aufgeschlagen, bei dem auch das in einem ähnlichen Fall nicht funktioniert. Ich geb durch, sobald da jemand rausgefunden hat, warum nicht.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#837962) Verfasst am: 12.10.2007, 14:46    Titel: Antworten mit Zitat

Shadaik hat folgendes geschrieben:
Lustigerweise ist grade jemand im Abakus-Forum aufgeschlagen, bei dem auch das in einem ähnlichen Fall nicht funktioniert. Ich geb durch, sobald da jemand rausgefunden hat, warum nicht.


Was soll er raus finden?

Das Verhalten von RewriteRule bezüglich dem Fragezeichen ist beabsichtigt und nachvollziehbar.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#838029) Verfasst am: 12.10.2007, 15:42    Titel: Antworten mit Zitat

Apeiron hat folgendes geschrieben:
Shadaik hat folgendes geschrieben:
Lustigerweise ist grade jemand im Abakus-Forum aufgeschlagen, bei dem auch das in einem ähnlichen Fall nicht funktioniert. Ich geb durch, sobald da jemand rausgefunden hat, warum nicht.


Was soll er raus finden?

Das Verhalten von RewriteRule bezüglich dem Fragezeichen ist beabsichtigt und nachvollziehbar.

nene, dein letzter Vorschlag.

Inzwischen kam diese Lösung, die aber auch nicht funktioniert:
Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/artikel.php
RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteRule ^(.*)$ http://www.domain.de/news/artikel%1.html? [R=301,L]

_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#838030) Verfasst am: 12.10.2007, 15:43    Titel: Antworten mit Zitat

Shadaik hat folgendes geschrieben:
Apeiron hat folgendes geschrieben:
Shadaik hat folgendes geschrieben:
Lustigerweise ist grade jemand im Abakus-Forum aufgeschlagen, bei dem auch das in einem ähnlichen Fall nicht funktioniert. Ich geb durch, sobald da jemand rausgefunden hat, warum nicht.


Was soll er raus finden?

Das Verhalten von RewriteRule bezüglich dem Fragezeichen ist beabsichtigt und nachvollziehbar.

nene, dein letzter Vorschlag.

Inzwischen kam diese Lösung, die aber auch nicht funktioniert:
Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/artikel.php
RewriteCond %{QUERY_STRING} ^id=([0-9]+)
RewriteRule ^(.*)$ http://www.domain.de/news/artikel%1.html? [R=301,L]


Kannst du mal den Link geben?

Würde mir es gerne mal anschauen. zwinkern


Zuletzt bearbeitet von Gustav Aermel am 12.10.2007, 15:53, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#838031) Verfasst am: 12.10.2007, 15:44    Titel: Antworten mit Zitat

Natürlich http://www.abakus-internet-marketing.de/foren/viewtopic/t-47876.html

Ich hab vorhin meine php-Lösung reingepostet, nicht wundern zwinkern
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gustav Aermel
dauerhaft gesperrt



Anmeldungsdatum: 05.04.2007
Beiträge: 1811

Beitrag(#838034) Verfasst am: 12.10.2007, 15:53    Titel: Antworten mit Zitat

Shadaik hat folgendes geschrieben:
Natürlich http://www.abakus-internet-marketing.de/foren/viewtopic/t-47876.html

Ich hab vorhin meine php-Lösung reingepostet, nicht wundern zwinkern


Sollen dort mal folgendes versuchen:

Code:
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^artikel\.php$ artikel%1.html


Die .htaccess Datei muss natürlich in den Newsordner.

edit:
Außerdem sollte er mal seine Punkte mit Schrägstrichen versehen. '.' -> '\.'
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> DAU's Paradise Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Impressum & Datenschutz


Powered by phpBB © 2001, 2005 phpBB Group