Seite 1 von 2
[GELÖST] mod_rewrite - Fragezeichen umwandeln
Verfasst: 26.02.2007, 15:34
von gartoffel
Hallo zusammen
Habe via Google dieses Forum gefunden. Mich interessiert folgender Beitrag:
https://www.abakus-internet-marketing.d ... 37726.html
Ich frage mich folgendes:
Ich möchte, dass ein Aufruf der Seite
https://www.silberperle.ch/profile.php?id=50 automatisch auf die Seite
https://ch.silberperle.org/profile/50 springt.
Dazu nutze ich mod_rewrite in einer .htaccess Datei:
Code: Alles auswählen
RewriteRule ^profile\.php?id=([0-9]+)$ http://ch.silberperle.org/profile/$1
Alles schön und gut, nur leider funktioniert das ? bei ...php?id=... nicht. Sobald ich das entferne, kann ich sehr wohl von
https://www.silberperle.ch/profile.phpid=50 nach
https://ch.silberperle.org/profile/50 springen, aber das Fragezeichen ist nun mal da und muss also berücksichtigt werden.
Hat irgendjemand eine Ahnung, was ich ändern muss? Habe bereits diverse Syntaxänderungen ausprobiert, aber kam zu keinem klugen Resultat.
Herzlichen Dank und Gruss aus der Schweiz
gartoffel
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Re: mod_rewrite - Fragezeichen umwandeln
Verfasst: 26.02.2007, 15:38
von cren
gartoffel hat geschrieben:...Habe bereits diverse Syntaxänderungen ausprobiert...
Und welche hast du ausprobiert? Eigentlich müsste doch ne einfache Maskierung mittels Backslash reichen.
Verfasst: 26.02.2007, 15:42
von gartoffel
Ja, genau die angetönte Änderung habe ich zum Beispiel erfolglos ausprobiert.
Auch mittels .* oder .? (also ein beliebiges Zeichen) konnte nicht das Gewünschte erreicht werden.
Edit um 15:51 Uhr:
Jetzt wirds ganz spooky: Wenn ich die Adresse wie folgt eingebe, dann funktionierts:
https://www.silberperle.ch/profile.php%3Fid=1
Aber ich möchte ja, dass es auch geht, wenn der User ? anstatt %3F eingegeben hat.
Hat jemand eine Erklärung?
Verfasst: 26.02.2007, 16:04
von chris21
Code: Alles auswählen
RewriteRule ^profile\.php\?id=([0-9]+)$ http://ch.silberperle.org/profile/$1
So hatte cren das gemeint und so sollte es auch funktionieren.
Verfasst: 26.02.2007, 16:08
von gartoffel
@chris21:
Ich habe cren schon richtig verstanden, danke. Genau die von Dir gepostete Rule ist im Moment aktiv und funktioniert nicht, bzw. wie von mir angetönt nur mit dem %3F anstatt dem "?"...
[solved]
Verfasst: 26.02.2007, 16:30
von gartoffel
Ich darf mit Stolz verkünden, dass das Problem gelöst wurde:
Unter Punkt 7 des folgenden Forums habe ich die Lösung gefunden:
https://www.modrewrite.de/foren/ftopic82.html
Auf den QueryString kann nicht direkt über eine RewriteRule zugegriffen werden, wie in folgendem Beispiel:
Code: Alles auswählen
#falsch!
RewriteRule ^fileinfo\.php\?file=([^&]+)&ordner([^&]+) /datei/$2/$1 [R=301,L]
Ich habe das bei mir jetzt folgendermassen gelöst:
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^profile\.php$ http://ch.silberperle.org/profile/%1? [R=301,L]
Ihr könnt euch selber davon überzeugen: es funktioniert!
Herzlichen Dank für euren seelischen Beistand und bis bald
gartoffel
Verfasst: 26.02.2007, 16:30
von chris21
Gut, dass sollte man sich merken.
Verfasst: 27.07.2008, 21:46
von schmidtsmikey
Hallo,
ich suche mich mittlerweile dumm und dämlich. Habe den htaccess-Eintrag mehrfach bearbeitet, aber ohne Erfolg.
Mein Problem: ich hatte früher mit Framesets gearbeitet und ein Java-Script zum Framenachladen verwendet. Aus diesem Grund gibt es viele Urls nach dem Schema
www.domain.de/index.html?name-der-datei.html
www.domain.de/index.html?andere-datei.html
www.domain.de/index.html?und-noch-eine-datei.html
Wie kann ich nun eine Rewrite-Regel definieren, welche diese URL weiterleitet. Folgender Eintrag in der htaccess-Datei ist erfolglos:
Code: Alles auswählen
RewriteRule ^index\.html(.*)name-der-datei\.html$ http://www.abc.de/ [L,R=301]
Probleme bereitet mir das Fragezeichen. HAbe es auch nach dieser Anleitung versucht, aber hier wird in der Condition alles nach dem id= verwendet. Bei mir ist es aber anders, da nach dem ? ein unterschiedlicher String folgt.
Weiß jemand Rat? Danke im Voraus!
Verfasst: 27.07.2008, 23:10
von chris21
Hi,
wenn es bei Dir keine URLs mit Query Strings (sprich: ? in den URLs) mehr gibt, sollte folgendes helfen:
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^index\.html http://www.example.com/? [L,R=301]
Damit werden jetzt alle Anfragen mit "index.html?irgendwas......" auf
www.example.com weitergeleitet.
Verfasst: 28.07.2008, 08:09
von schmidtsmikey
Danke für die prompte Antwort!
Es sollen aber nicht alle alten Seiten auf eine Domain weiterleiten, sondern auf die jeweilige neue Seite:
index.html?name-der-datei.html --> aaa.html
index.html?andere-datei.html --> bbb.html
index.html?und-noch-eine-datei.html --> ccc.html
Im Prinzip muss ich für jede einzelne URL (das sind rund 80-100 Einträge) auf eine neue URL umleiten.
Das habe ich auch schon so getan, nur bei den URLs mit einem ? gibt es das Problem, dass dieses eine einzige Zeichen nicht gematched wird. Ich habe es mit (.*), ?, \? und der passenden Escape-Sequenz versucht. Immer ohne Erfolg...
Verfasst: 28.07.2008, 12:56
von chris21
Das mit dem Fragezeichen funktioniert auch nicht, darauf hatte gartoffel uns in diesem Thread bereits praktischerweise gebracht.
Wenn die neuen Seiten andere URLs haben als das, was bisher nach dem ? stand, hilft nur, für jede Seite einzeln so was zu starten:
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^eine-alte-datei\.html$
RewriteRule ^index\.html http://www.example.com/neue-datei.html? [L,R=301]
Ansonsten, falls aus index.html?die-datei.html einfach www.....tld/die-datei.html werden sollte, wäre es einfacher, da könnte man es so regeln:
Code: Alles auswählen
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^index\.html http://www.example.com/%1? [L,R=301]
Verfasst: 28.07.2008, 14:22
von schmidtsmikey
vielen Dank! Das funktioniert. Prima!
Verfasst: 18.09.2009, 14:08
von daLuiz
.....
Verfasst: 18.09.2009, 17:40
von Kristian
Escape die - in der RewriteCond, ansonsten steht da übersetzt: 4 bis H, w bis t usw.
Verfasst: 18.09.2009, 19:56
von daLuiz
.....