Apache: mod_rewrite

Fragen zu allen anderen Programmiersprachen.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Apache: mod_rewrite

Beitrag von c4s »

So, ich möchte hier nun auch mal etwas PB-fernes fragen. ;)

Momentan sehen meine Links folgendermaßen aus:
Ich möchte aber, dass nur die erste Variable in der Addressleiste angezeigt wird, denn nur diese ist zur Navigation notwendig. Die Andere verwende ich für Statistiken und sollte deshalb vom User nicht kopiert werden.
Mein Ziel ist es also aus der obrigen Url folgendes zu bekommen:
Sicher kenne ich die Hilfetexte unter http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html, doch sind diese etwas erschlagend, wenn man nicht weiß wo genau man gucken sollte.
Kann mir jemand dazu mit Rat (und Tat) beiseite stehen?
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: Apache: mod_rewrite

Beitrag von AND51 »

PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: mod_rewrite

Beitrag von c4s »

Ja auf der Seite war ich auch schon, aber speziell auf meine Frage weiß sie mir auch nicht zu helfen und ist dabei auch relativ inhaltslos.
Ist wohl eher eine Ich-mache-mit-Suchmaschinentreffern-Geld-Seite...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Apache: mod_rewrite

Beitrag von TomS »

Das geht nicht.
Es heißt mod REWRITE und nicht mod HIDE.

Wofür ist der zweite Parameter, wenn nicht für Navigation?
Um Daten an andere PHP-Seiten zu übergeben, nutze Sessions. Um Login-Daten weiterzuleiten, nutze Post.

Vielleicht hast du auch nicht verstanden, was Mod_Rewrite eigentlich macht.

Deine Links, die du (und andere auf externen Seiten) setzt, sollen so aussehe, richtig? www.example.tld/index.php?var1=bla
Wozu dann var2?
Mod_Rewirte versteckt nicht irgendwas in der Adress-Leiste, es ermöglicht nur oben genannten Link zB so aufzurufen: example.tld/bla/
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: mod_rewrite

Beitrag von c4s »

Ja, ich glaube ich habe da etwas falsch verstanden, denn die Informationen der Abgeschnittenen Variablen ginge dann verloren, richtig?

Um mein Problem mal genauer zu erläutern:
Ich nutze Piwik zum Sammeln von Statistiken (übrigends sehr zu empfehlen im Vergleich zu Google Analytics & Co.) und möchte nun sogenannte Kampagnen nutzen, um herauszufinden woher bzw. warum der Besucher genau kommt. Diese Kampagnen-Parameter sollen aber nicht in der Addresse angezeigt werden:
Wenn jetzt der Besucher diese Url einem Freund schicken will, kopiert er (normalerweise) alles, was aber hierbei eher suboptimal ist, da dann die Statistik verfälscht wird und die Url weniger leserlich ist.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Apache: mod_rewrite

Beitrag von TomS »

Das geht nicht.
Dein Problem keine ich von Youtube. Die machen das genauso. watch?v=abcdef124&mode=embedded&related=xyz67890&subscribe=channel_id
Irgendwie so.

Wenn du Werbeanzeigen geschalten hast, dann leite diese auf example.tld/stats.php?produkt=auto&herkunft=werbepartner1

In stats.php steht dann sowas:
statistic_api->("insert",$_GET['herkunft'],time());
header('Location: index.php?produkt=auto');

Das bekommt dann der Besucher gar nicht mit. Er sieht example.tld/index.php?produkt=auto in der Adresszeile und trotzdem wurde der Statistik-Software übermittelt, dass der Besucher von einem Werbepartner hergefunden hat.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: mod_rewrite

Beitrag von c4s »

Danke für deine gute Idee. Mal schauen ob ich beim Piwik-Api genügend verstehe...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Apache: mod_rewrite

Beitrag von TomS »

Na, wenn das mit piwik_campaign klappt, dann benutz doch das.
Anstatt herkunft, mein ich jetzt.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Apache: mod_rewrite

Beitrag von c4s »

Ich meinte den Teil:
TomS hat geschrieben:statistic_api->("insert",$_GET['herkunft'],time());
Laut http://piwik.org/docs/tracking-api/ unter "PiwikTracker PHP Class API" müsste das dann irgendwie folgendermaßen aussehen:

Code: Alles auswählen

$t = new PiwikTracker($idSite = 1, 'http://example.org/piwik/');
$t->setUserAgent(getenv('HTTP_USER_AGENT'));
$t->setBrowserLanguage($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$t->setLocalTime(date('H:i:s'));
$t->setUrlReferer(getenv('HTTP_REFERER'));
$t->setCustomData(array('piwik_campaign' => $_GET['piwik_campaign']));
$t->setUrl($url = "'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']");
$t->doTrackPageView("Campaign: $_GET['piwik_campaign']");  // Seitentitel

header("Location: index.php?site=$_GET['site']");
Ich bin mir nicht ganz sicher ob das alles korrekt ist, aber ich hatte einfach mal versucht die ganzen Variablen zusammenzubekommen.


Eine kleine Frage am Rande, was ist am ehesten zu empfehlen: getenv(), $_ENV oder $_SERVER?
Ich hatte gerade festgestellt, dass man manche Werte über alle drei Methoden herausfinden kann, z.b. den User-Agent, Zeit, Addresse ...
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Apache: mod_rewrite

Beitrag von TomS »

Ja, klar. In deinem API-Code hast du hatl $_GET['piwik_campaign']. Ich hab ja nicht gewusst, wie die API funktioniert, deswegen mein pseudo-code mit 'herkunft'.
Der Code schaut brauchbar aus. Ob er auch funzt, musst du selber testen ;)

Da sich die beiden super globalen Arrays $_ENV und $_SERVER in dem Teil überschneiden, ist es egal, was du nimmst.
Mit getenv() bist du auf der sicheren Seite. Das funktioniert auch mit php version < 4.1 (was hoffentlich niemand mehr benutzt), und wenn aus Sicherheitsgründen die super globalen in der php.ini deaktiviert, oder teilwese deaktiviert sind.
Ich würde sagen A=B=C und es ist dir überlassen, welche Methode du wählst.
Antworten