|
|
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 17:30 : besucher von facebook und /?ref=nf |
|
|
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...
Zuletzt bearbeitet von umwelt am 16.01.2012, 17:41, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 17:41 : besucher von facebook und /?ref=nf |
|
|
Das "?ref=nf" hängt Facebook an.
ref = referral
nf = newsfeed |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 17:43 : besucher von facebook und /?ref=nf |
|
|
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? |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 17:47 : besucher von facebook und /?ref=nf |
|
|
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. |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 18:02 : besucher von facebook und /?ref=nf |
|
|
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? |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 18:08 : besucher von facebook und /?ref=nf |
|
|
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!
Zuletzt bearbeitet von umwelt am 16.01.2012, 18:11, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 18:09 : besucher von facebook und /?ref=nf |
|
|
| 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. |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 18:13 : besucher von facebook und /?ref=nf |
|
|
| Code: |
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]
|
|
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 18:13 : besucher von facebook und /?ref=nf |
|
|
| Und wenn es in der htaccess gar nichts gibt, was den Fehler verursachen könnte, dann liegt es an der index.php |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 18:22 : besucher von facebook und /?ref=nf |
|
|
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.... |
|
| Nach oben |
|
 |
stzweio

: 20.06.2011 : 123 : Rhein-Neckar-Kreis
|
| : 16.01.2012, 18:31 : besucher von facebook und /?ref=nf |
|
|
| umwelt hat Folgendes geschrieben: |
| blablabl.de/seite2.php?ref=nf funktioniert. nur blablabl.de/?ref=nf nicht. |
Gib in deiner htaccess den DirectoryIndex an, also
| Code: |
| DirectoryIndex index.php |
(oder was immer deine Index-Datei ist)
siehe auch diesen Thread:
http://www.abakus-internet-marketing.de/foren/viewtopic/t-104668.html |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 18:43 : besucher von facebook und /?ref=nf |
|
|
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. |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 19:46 : besucher von facebook und /?ref=nf |
|
|
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
http://domain.de/system/file.php
Das was Du wohl suchst / brauchst ist parse_url(). |
|
| Nach oben |
|
 |
umwelt

: 16.11.2011 : 51
|
| : 16.01.2012, 20:15 : besucher von facebook und /?ref=nf |
|
|
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... |
|
| Nach oben |
|
 |
Synonym

: 09.08.2008 : 3493 : Würzburg
|
| : 16.01.2012, 20:26 : besucher von facebook und /?ref=nf |
|
|
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: http://www.blabla.de/?ref=nf
alles bis inkl. dem letzten / ist der dirname
^^ also bei einer URL eben das http://www.blabla.de/?ref=nf
alles nach dem letzten / ist der basename
^^ in deinem Fall eben http://www.blabla.de/?ref=nf
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 http://www.blabla.de/?ref=nf
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 |
|
| Nach oben |
|
 |