Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

[GELÖST] mod_rewrite - Fragezeichen umwandeln

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
gartoffel
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 26.02.2007, 15:26
Wohnort: Zürich

Beitrag von gartoffel » 26.02.2007, 15:34

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
Zuletzt geändert von gartoffel am 26.02.2007, 16:31, insgesamt 2-mal geändert.

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


cren
PostRank 6
PostRank 6
Beiträge: 379
Registriert: 04.06.2005, 16:30

Beitrag von cren » 26.02.2007, 15:38

gartoffel hat geschrieben:...Habe bereits diverse Syntaxänderungen ausprobiert...
Und welche hast du ausprobiert? Eigentlich müsste doch ne einfache Maskierung mittels Backslash reichen.

gartoffel
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 26.02.2007, 15:26
Wohnort: Zürich

Beitrag von gartoffel » 26.02.2007, 15:42

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?

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 26.02.2007, 16:04

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.

gartoffel
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 26.02.2007, 15:26
Wohnort: Zürich

Beitrag von gartoffel » 26.02.2007, 16:08

@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 "?"...

gartoffel
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 26.02.2007, 15:26
Wohnort: Zürich

Beitrag von gartoffel » 26.02.2007, 16:30

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

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 26.02.2007, 16:30

Gut, dass sollte man sich merken.

schmidtsmikey
PostRank 1
PostRank 1
Beiträge: 13
Registriert: 19.01.2007, 08:23

Beitrag von schmidtsmikey » 27.07.2008, 21:46

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!

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 27.07.2008, 23:10

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.

schmidtsmikey
PostRank 1
PostRank 1
Beiträge: 13
Registriert: 19.01.2007, 08:23

Beitrag von schmidtsmikey » 28.07.2008, 08:09

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...

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 28.07.2008, 12:56

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]

schmidtsmikey
PostRank 1
PostRank 1
Beiträge: 13
Registriert: 19.01.2007, 08:23

Beitrag von schmidtsmikey » 28.07.2008, 14:22

vielen Dank! Das funktioniert. Prima!

daLuiz
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 18.09.2009, 13:53

Beitrag von daLuiz » 18.09.2009, 14:08

.....
Zuletzt geändert von daLuiz am 20.09.2016, 20:15, insgesamt 1-mal geändert.

Kristian
PostRank 9
PostRank 9
Beiträge: 1484
Registriert: 20.07.2005, 16:30

Beitrag von Kristian » 18.09.2009, 17:40

Escape die - in der RewriteCond, ansonsten steht da übersetzt: 4 bis H, w bis t usw.
Seo-Check Biete Links zu Schmuck und Hochzeit sowie Artikelplätze für Firmen allgemein.

daLuiz
PostRank 1
PostRank 1
Beiträge: 3
Registriert: 18.09.2009, 13:53

Beitrag von daLuiz » 18.09.2009, 19:56

.....
Zuletzt geändert von daLuiz am 20.09.2016, 20:16, insgesamt 1-mal geändert.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag