Seite 1 von 1
besucher von facebook und /?ref=nf
Verfasst: 16.01.2012, 16:30
von umwelt
Hallo,
in meiner statistik sehe ich, dass viele besucher von facebook auf meine seite blablabla.de/ kommen, allerdings mit dem anhängsel ?ref=nf kommen.
normalerweise dürfte kein query-string angehängt werden, in dem fall wird ein 404 herausgegeben... irgendwas ist da im argen.
also: blablabla.de/ --> alles klar
blabla.de/?ref=nf == 404 fehler.
ich nutze mod_rewrite, aber mir kommt nicht so recht in den sinn, wodurch dieser fehler verursacht werden könnte...
normaler weise dürften solche queries ja gar nicht beachtet werden, sofern php nicht per $_GET[] drauf zugreift...
Verfasst:
von
Hochwertiger Linkaufbau bei ABAKUS:
- Google-konformer Linkaufbau
- nachhaltiges Ranking
- Linkbuilding Angebote zu fairen Preisen
- internationale Backlinks
Wir bieten
Beratung und
Umsetzung.
Jetzt anfragen:
0511 / 300325-0
Verfasst: 16.01.2012, 16:41
von Synonym
Das "?ref=nf" hängt Facebook an.
ref = referral
nf = newsfeed
Verfasst: 16.01.2012, 16:43
von umwelt
ja, ich weiß. das soll der besucherstatistik dienen (was es ja auch tun würde, wenn man referrer verachtet und die tatsache, dass jeder sowas anhängen kann).
ich frage mich nur, warum das zum 404 führt.. es ist nur ein query-string... bei unterseiten funktioniert es. blablabl.de/seite2.php?ref=nf funktioniert. nur blablabl.de/?ref=nf nicht.
liegt bestimmt an der .htacces... nur was genau?
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 16.01.2012, 16:47
von Synonym
Achso... Jep, wenn das zu einem Fehler führt, dann liegt es an Deinem System / eventuell der htaccess...
Wo genau? Keine Ahnung, die htaccess kennen wir ja nicht.
Verfasst: 16.01.2012, 17:02
von umwelt
PHP (pathinfo) sagt, dass ?ref=nf der filename wäre...
das verstehe ich einfach nicht... habe grade die komplette URL parsen lassen, und dennoch sagt PHP, die query wäre der filename...
in der .htaccess habe ich nur regeln für unterverzeichnisse bzw. aufrufe im format blabla.html.
da blabla.de/ sowieso auf index.php weiterleitet, habe ich da nicht extra eine regel eingebaut.
Sollte ich aber vielleicht... nur wie?
Verfasst: 16.01.2012, 17:08
von umwelt
habe es jetzt PHP-seitig so versucht (hoffe, das haut hin):
<?php
if(str_replace(stristr($p, "?"), "", $p) == "") {
$p=str_replace(stristr($p, "?"), "", $p);
}
?>
er prüft also, ob der ganze pfad abzüglich aller zeichen ab (inkl) ? ungleich "" ist...
viele grüße!
Verfasst: 16.01.2012, 17:09
von Synonym
Nenn doch einfach erst mal die htaccess.... Warum PHP das mit dem filename behauptet ist ein ganz anderer Punkt. Kann von der htaccess kommen, aber auch nicht. htaccess ist jedenfalls das erste was abgearbeitet wird.
Verfasst: 16.01.2012, 17:13
von umwelt
Code: Alles auswählen
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} !^www\.blablabla\.de$
RewriteRule ^(.*)$ http://www.blablabla.de/$1 [L,R=301,QSA]
RewriteRule ^(.*)/([0-9]+).html$ sys.php?c=$1&p=$2 [NC,L,QSA]
RewriteRule ^bild/(.*).png$ img.php?iid=$1 [NC,L,QSA]
RewriteRule ^(.*).html$ index.php?path=$1 [NC,L,QSA]
Verfasst: 16.01.2012, 17:13
von Synonym
Und wenn es in der htaccess gar nichts gibt, was den Fehler verursachen könnte, dann liegt es an der index.php
Verfasst: 16.01.2012, 17:22
von umwelt
joa.. also ich bekomme in der index.php einen $path übergeben, den ich parse, um die entsprechenden seiten anzufordern...
mir ist eben nur ein rätsel, warum php den query-string als filename verwendet... so muss ich nochmal extra auf fragezeichen prüfen....
Verfasst: 16.01.2012, 17:31
von stzweio
umwelt hat geschrieben:blablabl.de/seite2.php?ref=nf funktioniert. nur blablabl.de/?ref=nf nicht.
Gib in deiner htaccess den DirectoryIndex an, also
(oder was immer deine Index-Datei ist)
siehe auch diesen Thread:
https://www.abakus-internet-marketing.d ... 04668.html
Verfasst: 16.01.2012, 17:43
von umwelt
hallo,
das hilft mir leider auch nicht weiter... klingt zwar interessant und verheißungsvoll, aber der test ergab: keine veränderung

.
nach wie vor wird der query-string als filename gehandlet.
Verfasst: 16.01.2012, 18:46
von Synonym
So, nochmal...
Du bekommt also so etwas zurück??
Wenn ja, dann ist Dein Script fehlerhaft. pathinfo arbeitet mit Dateipfaden auf Serverebene, nicht mit URLs !!!
Und bei einem Dateipfad ist kein Query vorhanden, also verwendest Du definitiv den falschen Input für die Funktion. Du kannst [SCRIPT_FILENAME] oder auch [SCRIPT_NAME] als Input nehmen, nicht aber [REQUEST_URI]. Letzteres geht unter Umständen schon, aber eben auch mit unerwarteten Ergebnissen wie bei Dir.
Pathinfo erwartet so etwas hier:
/var/www/vhosts/domain.de/public_html/system/file.php
und nicht
https://domain.de/system/file.php
Das was Du wohl suchst / brauchst ist parse_url().
Verfasst: 16.01.2012, 19:15
von umwelt
naja, aber bei mod_rewrite bekomme ich ja die link-URLs, und die sind mit domainname...
aus der URL extrahiere ich den scriptname. ist glaub usus, oder?
ich bekomme tatsächlich das, was du schriebst.,.. filename = ?ref=nf...
Verfasst: 16.01.2012, 19:26
von Synonym
Also nochmal...
Deine htaccess hat damit nichts zu tun...
Dein Script führt das pathinfo aus und dann machst Du mit dem Ergebnis irgendwas. Wenn falsch, wohl einen Fehler senden und genau der kommt ja.
Deine Frage war, warum der querystring als filename angegeben wird. Ganz einfach, weil Du pathinfo mit falschen werten fütterst.
URL:
https://www.blabla.de/?ref=nf
alles bis inkl. dem letzten / ist der dirname
^^ also bei einer URL eben das
https://www.blabla.de/?ref=nf
alles nach dem letzten / ist der basename
^^ in deinem Fall eben
https://www.blabla.de/[b]?ref=nf[/b]
Alles nach dem letzten / und nach dem ersten Punkt (.) ist die Extension.
^^ Punkt gibt es nicht, also auch keine Extension
Alles ab dem letzten / bis zum ersten Punkt ist der Filename
^^ also eben wieder
https://www.blabla.de/[b]?ref=nf[/b]
Die Funktion arbeitet also völlig korrekt, Du fütterst Die nur mit falschen Daten.
Also nicht die beiden "Pfade" verwechseln. Mod_rewrite arbeitet auf URL-Ebene, also mit Angaben ab dem Dokumenten-Root.
Pathinfo() arbeitet auf Datei-Ebene (Verzeichnisstruktur) ab dem Server-Root.
Schau Dir mal die Ausgabe von $_SERVER komplett an, da sind alle Werte drinnen. Zum einen der URL-Pfad und auch der Datei-Pfad.
z.B. Deine sys.php liegt etwa hier:
DOCROOT/sys.php
Auf Dateiebene aber z.B. hier:
SERVERROOT/var/www/vhosts/domain.de/http_docs/sys.php