Ich erinner mich das gleiche Problem gehabt zu haben.
Einzige Chance seh ich in einer htaccess-Regel für die entsprechenden Seiten, eine Automatik gibt es nicht.
Also händisch die betroffene Url mit einem 404-Header versehen.
Hallo liebes Forum,
ich habe in einem Projekt den Space-Character bei RealURL von Unterstrich (_) auf Minus (-) umgestellt.
Bsp vorher: www.meineurl.de/rubrik/unter_seite
Bsp nachher: www.meineurl.de/rubrik/unter-seite
Problem: Die Seiten werden bei Google jetzt doppelt indexiert. Beide Varianten werden mit HTTP Header 200 gefunden. Also kein 404 bei Unterstrich, was Google veranlassen würde die alte Seite zu kicken.
Das liegt offenbar daran, dass RealURL so kulant ist, beides gleich zu interpretieren.
Das Error-Handling ist bereits eingeschaltet, und funktioniert auch bei Rechtschreibfehlern (wie zB www.meineurl/rbik/egalwas oder www.meineurl/rubrik/untr-seite )
Hier die RealURL config:PHP-Code:$TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = '/seite_nicht_gefunden.html';
$TYPO3_CONF_VARS['FE']['pageNotFound_handling_statheader'] = 'HTTP/1.1 404 Not Found';
PHP-Code:// realurl config
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array(
// init
'init' => array(
'enableCHashCache' => 1,
'appendMissingSlash' => 'ifNotFile',
'enableUrlDecodeCache' => 1,
'enableUrlEncodeCache' => 1,
'respectSimulateStaticURLs' => 0,
// 'postVarSet_failureMode'=>'redirect_goodUpperDir',
'doNotRawUrlEncodeParameterNames' => 1,
'enable404forInvalidAlias' => 1,
'disableErrorLog' => 1,
),
// rewrite
'rewrite' => array(),
// prevars
'preVars' => array(
),
// pagepath
'pagePath' => array(
'type' => 'user',
'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
'spaceCharacter' => '-',
'expireDays' => 1,
'rootpage_id' => '1',
),
// filename
'fileName' => array(
'defaultToHTMLsuffixOnPrev' => true,
'index' => array(
'druckversion.html' => array(
'keyValues' => array(
'type' => 98,
),
),
'pdf.html' => array(
'keyValues' => array(
'type' => 123,
),
),
),
),
// postvarsets
'postVarSets' => array(
'_DEFAULT' => array(
'artikel' => array(
array(
'GETvar' => 'content_id',
'lookUpTable' => array(
'table' => 'tx_meinartikel_content',
'id_field' => 'uid',
'alias_field' => 'artikelname',
'addWhereClause' => ' AND NOT deleted',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
),
array(
'GETvar' => 'type',
'valueMap' => array(
'druckversion' => '98',
'pdf' => '123',
),
),
),
),
),
// fixedpostvars
'fixedPostVars' => array(),
);
Wie kann ich RealURL diese Kulanz abgewöhnen, also bei der nicht mehr gültigen Unterstrich Variante einen 404 auszugeben, damit Google die Seiten kickt?
Vielen Dank.
Grüsse, Jens
Ich erinner mich das gleiche Problem gehabt zu haben.
Einzige Chance seh ich in einer htaccess-Regel für die entsprechenden Seiten, eine Automatik gibt es nicht.
Also händisch die betroffene Url mit einem 404-Header versehen.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hi Steffen.
Das wäre schade. Und 200-300 Einträge in der htaccess - *uff* - aber immerhin eine Lösung. Vielen Dank.
Ich experimentiere mal weiter. Wenn ich was herausfinde poste ich es hier. Vielleicht hat ja sonst noch jemand eine Idee.
Ach ja, am Cache liegt es nicht. "Clear All Caches", sowie über das Info Modul alle RealURL Caches gelöscht, sicherheitshalber gleich nochmal per PHP alle RealURL Tabellen geleert, und den Webbrowsercache geleert.
Grüsse, Jens
ich habe mal eine Extension für diese Sache mit simulateStatic geschrieben, das funktionierte nach dem Prinzip:
Vergleiche Url mit tatsächlichem Titel. Bei richtiger Übersetung - go, bei flalscher, send 404
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Ah, klingt interessant. Der Code ist aber nicht "public", oder? Zumindest habe ich ihn nicht unter Deinen Extensions gefunden.
Wäre schon interessiert, obwohl bei mir nicht nur Seiten betroffen sind, sondern auch Datensätze aus eigener Extension. Und eben RealURL. Könnte man ja umstricken.
Eine weitere Lösungsmöglichkeit ist, über googles Webmastertools die Funktion "URLs löschen" zu verwenden. Pro: kein Programmieraufwand, kein einarbeiten in kryptische htaccess Syntax. Contra: Dauert eine Zeit bis zur Annahme der Löschung, Anzahl begrenzt, angeblich bleiben Seiten dann für mind. 180 Tage gelöscht.
Grüße Jens
die Ext ist recht simple
die ext nutzt folgenden hook:PHP-Code:class tx_simulatestaticuniqueurls {
function uniqueUrls(&$params, &$pObj) {
$extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['simulatestatic_unique_urls']);
$extConf = $extConf['plugin.']['tx_simulatestaticuniqueurls.'];
if (substr($pObj->siteScript, -5) == '.html' && $extConf['redirectPID']) {
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('title', 'pages', 'uid=' . $pObj->id);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
$pageTitle = $row['title'];
$temp = explode('.', $pObj->siteScript);
$usedTitle = $temp[0];
$replacementChar = strpos($usedTitle, '-') ? '-' : '_';
$replacementChars = '_\-' . ($replacementChar != '_' && $replacementChar != '-' ? $replacementChar : '');
$out = $pObj->csConvObj->specCharsToASCII($pObj->renderCharset, $pageTitle);
$out = preg_replace('/[^A-Za-z0-9_-]/', $replacementChar, trim(substr($out, 0, strlen($usedTitle))));
$out = preg_replace('/([' . $replacementChars . ']){2,}/', '\1', $out);
$out = preg_replace('/[' . $replacementChars . ']?$/', '', $out);
$out = preg_replace('/^[' . $replacementChars . ']?/', '', $out);
if ($out != $usedTitle) {
// doesn't match, make rediect
if ($extConf['headerCode']) {
header($extConf['headerCode']);
}
$pObj->id = $extConf['redirectPID'];
}
}
}
}
hoffe es hilft Dir.PHP-Code:$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['checkAlternativeIdMethods-PostProc'][$_EXTKEY] = 'EXT:simulatestatic_unique_urls/class.tx_simulatestaticuniqueurls.php:&tx_simulatestaticuniqueurls->uniqueUrls';
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
>> die Ext ist recht simple
recht simple *hust*. Für mich nicht wirklichAber sicher gut zum lernen für später!
Deine Tipps haben mich letztendlich auf die richtige Lösung gebracht:
Mittels htaccess kann ich die alten Patzer mit 404 versehen. Eben alle, die in Google gelistet sind, sich aber nicht per TYPO3 mit 404 versehen lassen und leer generiert werden. Jetzt bekommt Google für diese Seiten einen 404.
In meinem Fall siehts dann so aus:
Kleiner Wehrmutstropfen: die eigene Typo3-404-Seite (id=140) wird nicht wie angegeben umgeleitet, und so bekommt der User statt einer gestylten CI-konformen Message eben einen Standard 404 Fehler vorgesetzt. Aber das ist ja nur für die Übergangszeit, bis Google aktualisiert ist.Code:RewriteRule (.*)123.html http://www.meineurl.de/index.php?id=140 [R=404] RewriteRule (.*)_ http://www.meineurl.de/index.php?id=140 [R=404]
Vielen Dank nochmal und einen schönen Abend
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)