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

php-script in .htaccess ausführen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 08.01.2009, 09:06

Hallo...

Ich habe in einer .htaccess eine Weiterleitung:

Code: Alles auswählen

RewriteEngine On
RewriteRule (.*) http://www.domain.de/$1  [R=301,L]
Nun möchte ich aber gerne die Besucher zählen, die jeweils über die ursprünglichen Domains gekommen sind. Ist es möglich in der .htaccess
ein PHP-Script aufzurufen? Wenn ja, wie müsste der Code ausschauen?

Gruß
Andreas

Anzeige von ABAKUS

von Anzeige von ABAKUS »


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

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 08.01.2009, 11:09

AndreasB. hat geschrieben: Ich habe in einer .htaccess eine Weiterleitung:

Code: Alles auswählen

RewriteEngine On
RewriteRule (.*) http://www.domain.de/$1  [R=301,L]
Nur nebenbei, falls das alles wäre, ginge so eine pauschale Weiterleitung effektiver so: Redirect permanent / httр://www.domain.de/ - eine Zeile für alles., die auch keine aufwändige Musterbearbeitung benötigt.
Nun möchte ich aber gerne die Besucher zählen, die jeweils über die ursprünglichen Domains gekommen sind. Ist es möglich in der .htaccess
ein PHP-Script aufzurufen?
Jein. Die .htaccess ist eine Konfigurationsdatei des Apache-Webservers, entsprechend sind die Möglichkeiten begrenzt.

Nichtsdestotrotz kannst du, statt direkt die Weiterleitung auszugeben, den angefragten Pfad serverintern auf dein Zählskript umbiegen und in diesem weiterleiten.

In /.htaccess:

Code: Alles auswählen

RewriteEngine on
RewriteBase /
RewriteRule . zaehler.php
In /zaehler.php:

Code: Alles auswählen

<?php

$grafzahl++;

header&#40;"HTTP/1.0 301 Guggeduhier"&#41;;
header&#40;"Location&#58; http&#58;//www.example.com" . $_SERVER&#91;"REDIRECT_URI"&#93;&#41;;

?>
Es hindert dich davon abgesehen auch nichts daran, statt ein umständliches Zählwerk selbst einzurichten, einfach das Zugriffsprotokoll des Servers auszuwerten - da stehen nämlich die gleichen Daten drin.

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 08.01.2009, 12:59

Hallo Mork vom Ork,
Nur nebenbei, falls das alles wäre, ginge so eine pauschale Weiterleitung effektiver so: Redirect permanent / htt&#1088;://www.domain.de/ - eine Zeile für alles., die auch keine aufwändige Musterbearbeitung benötigt.
hier wird doch dann aber nur auf die Domain umgeleitet. Wenn die aufgerufene URL aber einen Zusatz hat (z.B. www.domain.de/test.php), dann wird das test.php nicht mit übergeben. Das ist aber wichtig.

Wie müsste der zaehler.php ausschauen, wenn die kompletten links weiter geleitet werden sollen. Also www.domain.de/test.php auf www.domain_neu/test.php (dies sollte aber bei allen Anhängen funktionieren)?

Würde es nicht auch so funktionieren (in der .htaccess):

Code: Alles auswählen

RewriteEngine On
RewriteRule . zaehler.php
RewriteRule &#40;.*&#41; http&#58;//www.domain.de/$1  &#91;R=301,L&#93;
Oder würde hier nur die zaehler.php abgearbeitet werden?

Es müsste halt beides der Reihe nach abgearbeitet werden.

Gruß
Andreas

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

bloddy newbie
PostRank 4
PostRank 4
Beiträge: 171
Registriert: 18.05.2006, 20:15

Beitrag von bloddy newbie » 09.01.2009, 10:53

Nein das geht nicht - machs wie Mork vorgeschlagen hat. Eine andere Lösung kommt leider nicht in Betracht.

Grüße Robert

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 09.01.2009, 11:35

Wie schaut es mit folgendem aus:

Code: Alles auswählen

<meta http-equiv="refresh"
      content="0; url=http&#58;//www.domain.de<?php echo $_SERVER&#91;"REQUEST_URI"&#93;; ?>" />
Vor allem, was hält Google davon?
Ist das schlecht, oder wird das von den Suchmaschinen akzeptiert?

Gruß
Andreas

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 09.01.2009, 11:39

AndreasB. hat geschrieben:
Nur nebenbei, falls das alles wäre, ginge so eine pauschale Weiterleitung effektiver so: Redirect permanent / htt&#1088;://www.domain.de/ - eine Zeile für alles., die auch keine aufwändige Musterbearbeitung benötigt.
hier wird doch dann aber nur auf die Domain umgeleitet. Wenn die aufgerufene URL aber einen Zusatz hat (z.B. www.domain.de/test.php), dann wird das test.php nicht mit übergeben.
Nein, Redirect leitet alles weiter, was unterhalb des angegebenen Pfades liegt, siehe Anleitung („any request beginning with URL-Path will return a redirect request to the client at the location of the target URL. Additional path information beyond the matched URL-Path will be appended to the target URL.“).

mod_rewrites Hauptnutzen liegt darin, einen angefragten Pfad intern umzubiegen, ohne, dass der Browser davon etwas mitbekommt. Weiterhin kann mod_rewrite mittels RewriteCond noch zusätzliche Parameter einbeziehen.
Externe Weiterleitungen sind jedoch mit Redirect und RedirectMatch meist genauso gut und mit weniger technischem Aufwand hinzubekommen.
Wie müsste der zaehler.php ausschauen, wenn die kompletten links weiter geleitet werden sollen. Also www.domain.de/test.php auf www.domain_neu/test.php (dies sollte aber bei allen Anhängen funktionieren)?
So, wie geschrieben. RewriteRule . zaehler.php biegt den angefragten Pfad auf zaehler.php um, speichert aber den Originalpfad in der Variablen REDIRECT_URI. Auf diese Variable greift zaehler.php dann in header("Location: https://www.example.com" . $_SERVER["REDIRECT_URI"]); zurück.
Wobei ich jetzt zugeben muss, die URL-Parameter vergessen zu haben. Insofern müsste es wohl eher header("Location: https://www.example.com" . $_SERVER["REDIRECT_URI"] . "?" . $_SERVER["QUERY_STRING"]); lauten, falls $_SERVER["QUERY_STRING"] nicht leer ist.
Würde es nicht auch so funktionieren (in der .htaccess):

Code: Alles auswählen

RewriteEngine On
RewriteRule . zaehler.php
RewriteRule &#40;.*&#41; http&#58;//www.domain.de/$1  &#91;R=301,L&#93;
Oder würde hier nur die zaehler.php abgearbeitet werden?
Nein und nein. Eine Anfrage an test.html würde zuerst (intern) in zaehler.php umgewandelt werden, anschließend würde zaehler.php in domain.de/zaehler.php umgewandelt und die externe Weiterleitung ausgegeben werden.
Die eigene zaehler.php wird dabei wohlgemerkt nicht aufgerufen, weder am Ende (da steht die externe Weiterleitung), noch zwischendurch. Der Text, der die URL kennzeichnet, wird zuerst von sämtlichen Rewrite-Zeilen abgearbeitet, erst am Ende erfolgt die weitere Auswertung mit dem Aufruf des URL-Pfades, der übrig bleibt - wobei man das Ende mit dem L auch vorzeitig einleiten kann, dann wird aber auch keine der nachfolgenden RewriteRule-Zeile ausgeführt.

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 11.01.2009, 23:22

Kann mir keiner was zu meiner geschriebenen Möglichkeit sagen?
Ist das gut oder schlecht?

So würde es nämlich genau so funktionieren, wie ich es brauche.

Gruß
Andreas

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 12.01.2009, 13:45

AndreasB. hat geschrieben:Wie schaut es mit folgendem aus:

Code: Alles auswählen

<meta http-equiv="refresh"
      content="0; url=http&#58;//www.domain.de<?php echo $_SERVER&#91;"REQUEST_URI"&#93;; ?>" />
<meta>-refresh ist eine Krücke für Leute, die keine Möglichkeit haben, selbst eine echte Weiterleitung auszugeben. Es ist schon ganz grundsätzlich schlichtweg Unfug, aus PHP heraus dieses Teil auszugeben, da PHP wie beschrieben auch echte Weiterleitungen ausgeben kann - du hast das Original an der Hand, benutzt aber eine mehr schlechte als rechte Kopie.

Davon unabhängig ist IMHO gerade dieses 0-Sekunden-<meta>-refresh-Dingens in der Vergangenheit hauptsächlich in Diensten von Spammern aufgefallen, vermutlich, weil Suchmaschinen lange Zeit diese Form der Weiterleitung nicht oder nur halbherzig ausgewertet haben.

Mach's, wenn überhaupt, dann wie in meiner ersten Antwort beschrieben mit RewriteRule . zaehler.php und header().

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 12.01.2009, 14:16

Hallo Mork vom Ork,

das mit der RewriteRule und der zaehler.php würde ich gerne machen, aber die Zählung der Zugriffe findet extern statt. Hier muss ich ein Bild einbinden und dann gibt es wieder Probleme mit dem "Header already send..."

Oder geht das irgendwie?

Gruß
Andreas

chrizz
PostRank 10
PostRank 10
Beiträge: 3044
Registriert: 05.07.2006, 10:37
Wohnort: Berlin

Beitrag von chrizz » 12.01.2009, 15:36

irgendwie passt das letzte Psoting nicht mehr zu Ausgangsposting.... oder es fehlen am Anfang ein paar entscheidene Informationen...

Jedenfalls blick ich das hier grad nicht... :-?

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 12.01.2009, 16:21

AndreasB. hat geschrieben:das mit der RewriteRule und der zaehler.php würde ich gerne machen, aber die Zählung der Zugriffe findet extern statt. Hier muss ich ein Bild einbinden
Aha. Dann dürfte es auch mit deinem <meta>-Vorschlag nicht funktionieren, schließlich kann der Browser nach den gewünschten 0 Sekunden (lies: sofort) schon längst die nächste Seite geladen haben, anstatt sich noch damit aufzuhalten, von irgendwo ein Bild zu holen, das er eigentlich eh nicht anzuzeigen braucht.

Du wirst deine Gründe haben, so von hinten durch die Brust ins Auge zählen zu lassen, aber eine halbwegs genaue Zählung kriegst du auf deinem Weg, mit der Zählgrafik, nur zustande, indem Du <meta>-Refresh mit fünf Sekunden Verzögerung einsetzt. Vielleicht lässt sich das noch verkürzen, indem man per Javascript auf onLoad reagiert, aber, ganz ehrlich: Das ist Kinderkacke, was du da vorhast. Wenn du was Ordentliches willst, nimm die Serverstatistik - oder lasse es ganz bleiben.

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 12.01.2009, 16:43

Mork vom Ork,

ich habe es so schon zum testen am laufen, und es funktioniert eigentlich. Es ist aber auch kein Problem, dass ich die Zeit erhöhe.

Ich habe gerade noch von jemanden eine Info bekommen, dass ich in der ersten Zeile des Codes folgendes mit dazu nehmen soll:

<?php header("HTTP/1.0 301 Moved Permanently") ?>

Das würde dem Bot ja dann sagen, dass die Seite dauerhaft verschoben wurde und entweder wird er mit dem <meta-tag> weiter geleitet, oder er nimmt den Link, den ich bereit gestellt habe.

Achja, bei meiner Serverstatistik werden die einzelnen Domains nicht eigens aufgeführt.

Gruß
Andreas

ins0
PostRank 4
PostRank 4
Beiträge: 128
Registriert: 01.09.2008, 18:29

Beitrag von ins0 » 12.01.2009, 16:43

du kannst die grafik innerhalb des php scriptes mit einem fsockopen() oder file() oder einer file_get_contents() function aufrufen ohne den nachfolgenden header request zu beeinflussen.

bsp:

url => (rewrite auf zähler.php) => fsockopen ( auf statistik request über bild ) => header anweisungen => ziel url


der vorteil ist daran ist, das es auch bei menschen funktioniert die wie ich, die Standart meta refreshs deaktiviert haben.



grüße ins0

AndreasB.
PostRank 4
PostRank 4
Beiträge: 121
Registriert: 05.01.2005, 21:45

Beitrag von AndreasB. » 12.01.2009, 17:00

Hallo ins0,

ich kenne mich in PHP eigentlich nicht so aus.
Kannst du mir vielleicht den passenden Code-Schnipsel schicken?

Gruß
Andreas

ins0
PostRank 4
PostRank 4
Beiträge: 128
Registriert: 01.09.2008, 18:29

Beitrag von ins0 » 12.01.2009, 17:06

Code: Alles auswählen

$fsockopen = fsockopen &#40;'http&#58;//static.racecore.de/blablup_bild.jpg', 80, $errno, $errstr, 30&#41;;

header&#40;"HTTP/1.0 301 Moved Permanently"&#41;;
header&#40;"Location&#58; http&#58;//www.....blablup"&#41;;
grüße ins0

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag