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

punkt in query-string

Hier können Sie Ihre Fragen zum Thema Suchmaschinenoptimierung (SEO) / Positionierung stellen
Neues Thema Antworten
umwelt
PostRank 6
PostRank 6
Beiträge: 386
Registriert: 16.11.2011, 22:06

Beitrag von umwelt » 26.09.2012, 11:53

Hallo,
ich habe folgendes Problem:

eine Seite wird mit mod_rewrite optimiert... QSA als flag.

rufe ich die seite mit seite1.html auf, wird auf index.php?id=1 verwiesen.

auch seite1.html?var=bla ruft index.php?id=1 auf und übergibt zudem "var" per GET.

wenn ich aber seite1.html?var=bla.bla aufrufe, kommt ein 404. Der Punkt scheint der Auslöser zu sein.

Jemand eine idee, wie ich das löse?

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.


umwelt
PostRank 6
PostRank 6
Beiträge: 386
Registriert: 16.11.2011, 22:06

Beitrag von umwelt » 26.09.2012, 12:11

hatte gelogen :)

(.*).html wird an bla.php weitergeleitet, das den aufruf-pfad zerlegt und intern verarbeitet.

pathinfo() trennt beim punkt den dateinamen von der endung. wenn also ein punkt in der query erscheint, wird erst da getrennt.

mit explode und array[0] bekommt man also den ersten teil des "dateinamens" raus.
ist ein punkt eigentlich in einer URL gültig, oder setzt sich facebook da übers standards hinweg?

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 26.09.2012, 13:11

umwelt hat geschrieben:wenn ich aber seite1.html?var=bla.bla aufrufe,
umwelt hat geschrieben:ist ein punkt eigentlich in einer URL gültig, oder setzt sich facebook da übers standards hinweg?
Der Punkt bezieht sich nicht auf die Gliederung der URL, sondern gehört zum Wert.

Parameter1 = Wert1&Parameter2 = Wert2

Wüsste jetzt nicht, was dagegen sprechen sollte, wenn der Wert zum Beispiel die Zahl 251.56 enthält. Vielleicht sollte man den Punkt escapen? Ein Punkt hat mich bisher noch nicht gestört, müsste man mal testen.

Für PHP: rawurlencode() Doch der Punkt gehört doch da wohl nicht zu, denke ich und so steht es doch auch geschrieben.
Diese Kodierung, …, wurde entworfen, um Sonderzeichen davor zu bewahren, fälschlich als spezielle URL-Trennzeichen interpretiert zu werden,..
https://php.net/manual/de/function.rawurlencode.php

Oder für JavaScript: encodeURI()

https://de.selfhtml.org/javascript/obje ... encode_uri
Zuletzt geändert von Melegrian am 26.09.2012, 13:23, insgesamt 1-mal geändert.

umwelt
PostRank 6
PostRank 6
Beiträge: 386
Registriert: 16.11.2011, 22:06

Beitrag von umwelt » 26.09.2012, 13:22

is mir schon klar, dass der zum parameter-wert gehört.
bloß: php erkennt dann offenbar nicht, wo der dateiname endet... pathinfo() mit einer solchen url

Code: Alles auswählen

blablba.html?bla=blubb&bleb=blagleichkommteinpunkt.blubbdiblei
ergibt

Code: Alles auswählen

blablba.html?bla=blubb&bleb=blagleichkommteinpunkt
als dateiname.
damit kann man intern natürlich nicht ohne weiteres vorgehen

dat is ja nich sinn der sache... deshalb fragte ich mich, wo der fehler liegt.

edit, hier steht was dazu: https://php.net/manual/en/function.pathinfo.php#88654

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 26.09.2012, 13:37

Na ja, erst mit strpos nach einem Fragezeichen zu suchen, weil mit pathinfo das Fragezeichen nicht erkannt wird, wenn in einem Wert vom QueryString noch ein Punkt vorkommt, erscheint mir auch recht umständlich. Vielleicht sollte man den dann doch lieber irgendwie maskieren.

umwelt
PostRank 6
PostRank 6
Beiträge: 386
Registriert: 16.11.2011, 22:06

Beitrag von umwelt » 26.09.2012, 13:41

hallo,
ich habe das bei einem link von facebook bemerkt. aus irgendeinem grund waren da viele variablen enthalten, u. a. mit punkt im wert. da ist mir aufgefallen, dass ich trotz korrektem mod_rewrite einen 404 erhalte, wenn ich die Query nicht entferne bzw. den Punkt aus dem wert entferne.

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 26.09.2012, 14:40

Ja, ist ja interessant, basename bleibt aber extension und filename sind bei was2 nicht mehr zu gebrauchen. Wenn ich statt dem Punkt %2E verwende, entspricht was3 wieder was1. Also, eventuell Punkte im QueryString vorher umwandeln, sollte zumindest einen Test wert sein.

Code: Alles auswählen

<?php

$was1 = pathinfo&#40;"http&#58;//localhost/a.php?para=251"&#41;;
$was2 = pathinfo&#40;"http&#58;//localhost/a.php?para=251.56"&#41;;
$was3 = pathinfo&#40;"http&#58;//localhost/a.php?para=251%2E56"&#41;;  // Punkt gleich %2E

echo "<pre>\n";
print_r&#40;$was1&#41;;
print_r&#40;$was2&#41;;
print_r&#40;$was3&#41;;
echo "</pre>\n";

/*
Ausgabe was1&#58;

Array
&#40;
    &#91;dirname&#93; => http&#58;//localhost
    &#91;basename&#93; => a.php?para=251
    &#91;extension&#93; => php?para=251
    &#91;filename&#93; => a
&#41;
Ausgabe was2&#58;

Array
&#40;
    &#91;dirname&#93; => http&#58;//localhost
    &#91;basename&#93; => a.php?para=251.56
    &#91;extension&#93; => 56
    &#91;filename&#93; => a.php?para=251
&#41;
Ausgabe was3&#58;

Array
&#40;
    &#91;dirname&#93; => http&#58;//localhost
    &#91;basename&#93; => a.php?para=251%2E56
    &#91;extension&#93; => php?para=251%2E56
    &#91;filename&#93; => a
&#41;
*/
?>

umwelt
PostRank 6
PostRank 6
Beiträge: 386
Registriert: 16.11.2011, 22:06

Beitrag von umwelt » 26.09.2012, 17:21

hmm, jo. glaubst du, explode() ist rechenaufwändiger als str_replace bzw urlencode()?

Melegrian
PostRank 10
PostRank 10
Beiträge: 3170
Registriert: 30.01.2005, 12:36

Beitrag von Melegrian » 26.09.2012, 20:57

Nein, wie es am einfachsten geht. Wenn es mit explode() einfacher zu handhaben ist, warum nicht.
Scripts und Plugins für Cookie-Hinweise

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag