Jemand eine Idee, wie man die Seiten herausfindet, die fälschlicherweise aufgerufen werden - eventuell auch noch den Referer hierzu!?
404 Fehlerseiten und Referer mitloggen
Ich mache das mit TYPO3-externem awstats.
Das müßte doch die awstats-Extension auch können, oder?
Gruß, Regina
Awstats wäre eine gute Idee
Awstats habe ich installiert und funktioniert auch schon mal prinzipiell.
Obwohl ich eine nicht-existierende Seite aufgerufen habe, erscheint nichts unter dem Punkt "HTTP Fehlercodes"
Der Headercode 404 wird auf jeden Fall ausgegeben
Jemand Erfahrungswerte hier?
Gibt es hier schon News?
Ich würde gerne die nicht-existierenden Seiten in einer Tabelle speichern um sie später umzuleiten!
Gruß, Daniz
Nicht...?
Na gut, hab ich´s also selbst gemacht!
kurze Beschreibung:
1. TYPO3 mitteilen das es eine USER_FUNCTION für das pageNotFound_handling gibt
2. In dieser den Referer und die aufzurufende Seite auslesen
3. Informationen in eine neue Tabelle (z.B. error_404) eintragen
4. cronjob einrichten der ein weiteres Skript für den Statusbericht aufruft
5. fehlerhafte Links in .htaccess umleiten
Wenn man konsequent die falschen URLs in der .htaccess umleitet, sollten nach einiger Zeit alle fehlerhaften Links verschwinden.
Für einen Relaunch einer Internetseite mit neuer Seitenstruktur sehr zu Empfehlen!
Erweiterungen der localconf.php
[FE][pageNotFound_handling] = USER_FUNCTION:fileadmin/develop/php/pageNotFoundHandling.php:user_pageNotFound->pageNotFound
[FE][pageNotFound_handling_statheader] = HTTP/1.0 404 Not Found
Aufbau der pageNotFoundHandling.php:
<?php
require_once(PATH_tslib.'class.tslib_pibase.php');
class user_pageNotFound {
function pageNotFound($param,$ref) {
$host = $_SERVER['SERVER_NAME'];
$requestedPage = $param['currentUrl'];
$refererPage = $_SERVER['HTTP_REFERER'];
$errorPage = "/404-seite.html"; // entsprechend anpassen
$timestamp = time();
$fields_values = array(
'page' => $requestedPage,
'referer' => $refererPage,
'tstamp' => $timestamp
);
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery('error_404', $fields_values, FALSE);
header("HTTP/1.0 404 Not Found");
if($res) {
header("Location: http://$host$errorPage");
}
}
}
?>
Aufbau der errorReport.php:
<?php
require_once(PATH_tslib.'class.tslib_pibase.php');
function sendErrorMail() {
$timestamp = time();
$mailTo = 'adresse@domain.tld';
$mailSubject = '404-Seite aufgerufen';
$mailText = 'Die folgenden Fehlerseiten wurden aufgerufen:'."\n\n";
$mailHeader = 'From: 404-Seite@domain.tld' . "\r\n";
$where = 'tstamp < '.$timestamp.' AND checked = 0';
# Get elements from DB
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','error_404',$where,'','','');
$count = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
if($count > 0) {
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$mailText .= 'Ursprungsseite: '.$row['referer']."\t".'Zielseite: '.$row['page']."\n";
}
$mailText .= "\n".'Hinweis: Die Ursprungsseite kann nur ausgelesen werden, wenn auf einen Link geklickt wurde und der Benutzer die Option nicht deaktiviert hat.'."\n";
$mailText .= "\n".'Sie können die falschen Links in der .htaccess eintragen um sie korrekt umzuleiten'."\n";
$mailText .= 'Beispiel: Redirect permanent /falscheUrl.html http://www.domain.de/richtigeUrl.html'."\n";
$mailText .= 'Wichtig: Die aufgerufene Seite muss unbedingt als absoluter Pfad angegeben werden!'."\n\n";
if(@mail($mailTo, $mailSubject, $mailText, $mailHeader)) {
echo 'mail gesendet...';
$where = "checked = 0 AND tstamp < $timestamp ";
$fields_values = array(
'checked' => 1
);
// gesendete Einträge markieren
$marked = $GLOBALS['TYPO3_DB']->exec_UPDATEquery(
'error_404',
$where,
$fields_values,
FALSE
);
if($marked) {
echo 'und Einträge markiert';
}
// gesendete Einträge löschen
// $GLOBALS['TYPO3_DB']->exec_DELETEquery('error_404','tstamp <'.$timestamp);
}
} else {
echo 'keine neuen Einträge vorhanden';
}
}
?>
Für Anregungen/Erweiterungen bin ich wie immer dankbar!
Gruß, Daniz
Hi Daniz, geniale Sache!
Klasse Sache!!
Wenn du jetzt noch eine mini-Extension daraus machst danken dir viele Leute dafür!
Daniel
Danke für den Ansporn!
Werde es diese Woche wohl nicht schaffen aber wenn Interesse besteht könnte ich die Mini-Extension nächste Woche in Angriff nehmen!
daniz78 schriebaber wenn Interesse besteht
Ich denke, dass das bei vielen Benutzern gut ankommt
Da hast du vollkommen Recht einpraegsam ist auch meine Meinung!
Und daniz selbst wenn du es erst in drei Wochen schaffen solltest, ist es trotzdem klasse von dir das du der Community was von deiner Zeit und deinem Wissen "opferst".
Daniel
PS: Info an Mittwald: Ich hätte gern ein smiley mit Daumen hoch!! 😃
Habs mal in ähnlicher Form in einer Extension umgesetzt:
http://typo3.org/extensions/repository/view/wt_404log/0.1.1/
So lange das Manual noch nicht gerendert ist -
Das muss in die localconf.php damit die Extension läuft (wenn wt_404log eine locale Extension):
$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = 'USER_FUNCTION:typo3conf/ext/wt_404log/pi1/class.tx_wt404log_pi1.php:tx_wt404log_pi1->main'; // Modified or inserted by TYPO3 Install Tool.
Kaum im TER schon verbessert:
Version 0.1.2 speichert ob der Benutzer von Extern kam und der Name des Spiders (falls Besucher ein Spider)