Seite 1 von 1

google sitemap

Verfasst: Fr 03.Jun, 2005 17:12
von lazka
grad bei heise aufgetaucht.

Hierbei handelt es sich um ne Sitemap (XML) die man wie eine robots.txt (nur ein bischen komplizierter)
ins root-dir haut und google findet sofort alle wichtigen seiten ohne irgendwie im linktschungel zu versinken.

Find ich imho ne super Idee.

http://www.heise.de/newsticker/meldung/60254

Verfasst: Fr 03.Jun, 2005 17:39
von AmigaLink
Wenn das System klappt, könnte es sehr Interessant sein. :)

Verfasst: Fr 03.Jun, 2005 18:44
von oxpus
Ja, spart es doch einiges an Traffic!

Verfasst: So 05.Jun, 2005 22:20
von lazka
wens interessiert: Titus (und ein bischen ich) hat da ein Script gebaut welches die Sitemap anhand der Datenbankinfos erstellt : http://www.phpbb2.de/viewtopic.php?p=154967#154967

(btw. hab jetzt ein Avatar :D )

Verfasst: Mo 06.Jun, 2005 08:31
von ToXic
[quote="lazka - So 05.Jun, 2005 22:20";p="34515"]wens interessiert: Titus (und ein bischen ich) hat da ein Script gebaut welches die Sitemap anhand der Datenbankinfos erstellt : http://www.phpbb2.de/viewtopic.php?p=154967#154967

(btw. hab jetzt ein Avatar :D )[/quote]

Hi,
also damit ich als Laie das richtig bzw. halbwegs verstehe. Copy & Paste in z.B. sitemap.php, rauf auf das Server root, als admin mit Aufruf von www.meinforum.de/phpBB2/sitemap.php starten? Und dann funktioniert das und es wird eine entsprechende *.gz datei erstellt?

Thx 4 Help :-)

Verfasst: Mo 06.Jun, 2005 16:03
von lazka
jup. oder du haust das sessionmanagement, include, message zeugs raus und includest es in deine z.B.: Portal.php

Verfasst: Mo 06.Jun, 2005 16:51
von blondi
bei mir kommt nur (fetig) wenn ich das ausführe... was genau passiert da?
gruss

Verfasst: Mo 06.Jun, 2005 17:40
von ToXic
[quote="lazka - Mo 06.Jun, 2005 16:03";p="34586"]jup. oder du haust das sessionmanagement, include, message zeugs raus und includest es in deine z.B.: Portal.php[/quote]

Hi,
hochladen und aufrufen sowie ausführen funktioniert, jedoch wird keine sitemap.xml bzw. sitemap.xml.gz generiert. Scheint wohl mit der Permission zusammenzuhängen? Ich poste mal ne Meldung:
Warning: gzopen(./sitemap.xml): failed to open stream: Permission denied in /www/htdocs/xxxxxxx/phpBB2/xgoogle.php on line 99

Warning: gzwrite(): supplied argument is not a valid stream resource in /www/htdocs/xxxxxxx/phpBB2/xgoogle.php on line 100

Warning: gzclose(): supplied argument is not a valid stream resource in /www/htdocs/xxxxxxx/phpBB2/xgoogle.php on line 101

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/xxxxxxx/phpBB2/xgoogle.php:99) in /www/htdocs/xxxxxxx/phpBB2/includes/page_header.php on line 791

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/xxxxxxx/phpBB2/xgoogle.php:99) in /www/htdocs/xxxxxxx/phpBB2/includes/page_header.php on line 793

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/xxxxxxx/phpBB2/xgoogle.php:99) in /www/htdocs/xxxxxxx/phpBB2/includes/page_header.php on line 794
Wenn ich das ganze halbwegs richtig verstehe werden dann aus der Datenbank sämtliche Topics in eine *.xml Datei geschrieben. Diese sende ich dann an Google, und anhand der übermittelten Informationen indexiert Google mein Board in deren Index? Falls dem so ist und der Service weiterhin seitens Google bestehen bleibt, könnte ich den SUMaMod aus meinem Board ausbauen. Der läuft nämlich bei mir nicht richtig ... User können keine Lesezeichen/Bookmarks setzen. Und das nervt irgendwie.

Aber wie ich nun das Script zum laufen bekomme, habe ich leider immer noch nicht verstanden. Ob du mir/uns Laie/n noch etwas unterstützen könntest? So mit ner kurzen Einbauanleitung? *liebfrag* Thx :-)

Verfasst: Mo 06.Jun, 2005 17:42
von ToXic
bei mir kommt nur (fetig) wenn ich das ausführe... was genau passiert da?
gruss
Wenn alles funktioniert hat, solltest du im SeverRoot eine Datei namens sitemap.xml.gz liegen haben. Diese schickst du dann an Google. Wies dann weitergeht entzieht sich momentna leider meiner kenntniss ... sry :-(

Verfasst: Mo 06.Jun, 2005 18:16
von lazka
probier mal ne leere sitemap.xml.gz Datei zu machen und der dann Chmod 0644 bzw. 666 zu geben.

oder schreib mal statt dem

Code: Alles auswählen

   $fileName = gzopen($cache_data_file, "w9");
   gzwrite($fileName, $sitemap);
   gzclose($fileName); 

Code: Alles auswählen

if($fileName = gzopen($cache_data_file, "w9"))
{
	gzwrite($fileName, $sitemap);
	gzclose($fileName);
	@chmod($cache_data_file, 0666);
}
aber was das Header-zeugs betrifft :confused:

Verfasst: Mo 06.Jun, 2005 23:39
von blondi
also nachdem ich es ausgeführt habe und die mekdung fertig bekommen habe...ist nun eine sitemap.xml.gz bei mir im root zu finden...

und was mach ich nun genau mit der?
lieben gruss

Verfasst: Di 07.Jun, 2005 05:16
von lazka
erstell bei googöe nen Account (wenn du bei Gmail bist gehts auch).
dann zur Sitemap-Seite: https://www.google.com/webmasters/sitemaps/login
und dort den Link hinzufügen.

Verfasst: Di 07.Jun, 2005 08:15
von ToXic
Zuerst einmal Danke für die freundliche Unterstützung. Aber es will bei mir nicht laufen. Es wird beim Aufruf des Scrits keine *.xml Datei angelegt. Auch das Aufspielen einer sitemap.xml.gz (CHMOD 644 bzw. 666) ins Root brachte kein Ergebnis. Ich habe dann einmal eine leere sitemap.xml hochgeladen und das Script erneut ausführen lassen. Diesmal "ohne" Fehlermeldungen und dem Status "Noch Aktuell". Ich kann mir nur denken das mein Provider all-inkl.com das Schreiben auf dem Server nicht zulässt.

Für weitere Tipps bin ich natürlich dankbar :-)

Verfasst: Di 07.Jun, 2005 11:41
von Titus
kommentiere mal folgendes aus

Code: Alles auswählen

{ 
   $valid = (date('YzH',time()) - date('YzH',@filemtime($cache_data_file))<23) ? true : false; 
} else 
{ 
   $valid = false; 
} 

if ($valid ) 
{ 
   message_die(GENERAL_MESSAGE, 'noch aktuell'); 
   exit; 
} else 
damit umgehst du die "Datei aktuell?"-Prüfung

ist bei der datei doppelt vertreten da ich in den text alles aufgenommen habe, da der eine es evtl automatisch ausführen will, der andere lieber manuell (daher die Admin abfrage)

Verfasst: Di 07.Jun, 2005 12:22
von ToXic
[quote="Titus - Di 07.Jun, 2005 11:41";p="34696"]kommentiere mal folgendes aus
damit umgehst du die "Datei aktuell?"-Prüfung

ist bei der datei doppelt vertreten da ich in den text alles aufgenommen habe, da der eine es evtl automatisch ausführen will, der andere lieber manuell (daher die Admin abfrage)[/quote]

Hi,
danke dir für den Tipp. Habe ich gemacht und ausgeführt ... es kommen keine Fehler und es wird Fertig angezeigt (innerhalb von 1-2 Sekunden), aber leider wird kein File auf dem Server geschrieben. Ich hänge den aktuellen Code mal an, vielleicht kannst du bei gelegenheit einmal drüberschauen? Thx :-)

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

// 
// Start session management 
// 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 
// 
// End session management 
// 
if ($userdata['user_level'] != ADMIN) 
{ 
   message_die(GENERAL_MESSAGE, 'nur für Admins'); 
   exit; 
} 
// $cache_data_file = $phpbb_root_path."sitemap.xml"; 
$cache_data_file = $phpbb_root_path."sitemap.xml.gz"; 
if (@is_file($cache_data_file)) 

// { 
//   $valid = (date('YzH',time()) - date('YzH',@filemtime($cache_data_file))<23) ? true : false; 
// } else 
// { 
//   $valid = false; 
// } 

// if ($valid ) 
// { 
//   message_die(GENERAL_MESSAGE, 'noch aktuell'); 
//   exit; 
// } else 

{ 
   // erzeugen Daten 
   $sitemap = "<?xml version="1.0" encoding="UTF-8"?>\n"; 
    
   $sitemap .= "<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"\n"; 
   $sitemap .= "xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n"; 
   $sitemap .= "xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84\n"; 
   $sitemap .= "http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">\n"; 
    
   $sql =   "SELECT MAX(topic_views) as maxviews FROM " . TOPICS_TABLE; 
   if ( !($result = $db->sql_query($sql)) ) message_die(GENERAL_ERROR, 'Could not obtain sitemap information', '', __LINE__, __FILE__, $sql); 
   $row = $db->sql_fetchrow($result); 
    
   $maxviews = $row['maxviews']; 
    
   $sql =   "SELECT t.topic_id, t.topic_time, t.topic_views, t.topic_replies, p.post_time 
        FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f, " . POSTS_TABLE . " AS p 
        WHERE f.forum_id = t.forum_id 
        AND f.auth_view = " . AUTH_ALL . " 
        AND p.post_id = t.topic_last_post_id 
        ORDER BY t.topic_last_post_id DESC 
        LIMIT 50000"; 
   if ( !($result = $db->sql_query($sql)) ) message_die(GENERAL_ERROR, 'Could not obtain sitemap information', '', __LINE__, __FILE__, $sql); 
    
    
   while ($row = $db->sql_fetchrow($result)) 
   { 
      // Ausrechnen der avg. Aktualisierungszeit 
      //"always", "hourly", "daily", "weekly", "monthly",  ("yearly" and "never") 
      $avgtime = ((time()-$row['topic_time'])/($row['topic_replies']+1))/3600; 
       
      if ($avgtime < 1)         $changefreq = "always"; 
      else if ($avgtime < 24)      $changefreq = "hourly"; 
      else if ($avgtime < 168)   $changefreq = "daily"; 
      else if ($avgtime < 5040)   $changefreq = "weekly"; 
      else                  $changefreq = "monthly"; 
       
      //Priorität bezogen auf die Views (quadratisch) 
      $priority = round( sqrt($row['topic_views']/$maxviews), 1); 
      if ($priority >= 1)         $priority = "1.0"; 
      else if ($priority <= 0)   $priority = "0.0"; 
       
      //Zeit des letzten Beitrags 
      $iso8601_time = date('Y-m-d\TH:i:s', $row['post_time']) . substr(chunk_split(date('O',$row['post_time']), 3, ':'),0,6); 
       
      // Ausgabe der einzelnen Seiten 
      for($post=0; $post<=$row['topic_replies']; $post+=$board_config['posts_per_page']) 
      { 
         $add = ($post>0) ? "&start=".$post : ""; 
         $sitemap .= "<url>\n"; 
         $sitemap .= "<loc>http://".$board_config['server_name'].$board_config['script_path']."viewtopic.php?t=".$row['topic_id'].$add."</loc>\n"; 
         $sitemap .= "<lastmod>".$iso8601_time."</lastmod>\n"; 
         $sitemap .= "<changefreq>".$changefreq."</changefreq>\n"; 
         $sitemap .= "<priority>".$priority."</priority>\n"; 
         $sitemap .= "</url>\n"; 
      } 
   } 
   $sitemap .= "</urlset>"; 

   // Schreibe File 
/*   $fileName = fopen ($cache_data_file, 'w'); 
   fputs ($fileName, $sitemap); 
   fclose ($fileName); */ 

   $fileName = gzopen($cache_data_file, "w9"); 
   gzwrite($fileName, $sitemap); 
   gzclose($fileName); 

 if($fileName = gzopen($cache_data_file, "w9")) 
 { 
   gzwrite($fileName, $sitemap); 
   gzclose($fileName); 
   @chmod($cache_data_file, 0666); 
 }


} 
message_die(GENERAL_MESSAGE, 'Fertig'); 
?> 
EDIT:
Wohl ein wenig zuviel ausgeklammert meinerseits ... *schäm* :-( Aber jetzt hat es funktioniert .... ich habe eine sitemap.xml.gz auf dem Root liegen. habe die mal geöffnet und es sind knappe 2500 Zeilen Code drinnen. Werde das File mal zu Google hochladen und sehen was dann passiert :-)

Verfasst: Di 09.Aug, 2005 15:41
von hemman
Was muss in der sitemap.xml.gz stehen.
Beim mir schreibt er noch aktuell,aber wenn ich die sitemap.xml.gz entpacke ist in denordner nichts drin.
Wer kann helfen..

Verfasst: Di 09.Aug, 2005 15:44
von blondi
mach mal zum test paar postings in deinem board und ruf die seite noch mal als admin auf ...


gruss

Verfasst: Di 09.Aug, 2005 15:54
von hemman
hab ich schon.
Wenn ich die sitemap.xml.gz auf meinen rechner hole und entpacke ist in den ordner nichts drin.

Kann mir keiner helfen?

Verfasst: Mi 10.Aug, 2005 08:21
von hemman
Hat keiner eine Idee,warum in der sitemap.xml.gz nichts drin steht.
Er meldet nach dem Aufruf der /sitemap.php -fertig,aber nach entpacken ist in dem Verzeichnis nichts drin.

Kann mir keiner helfen?

Verfasst: Do 11.Aug, 2005 14:28
von AmigaLink
CHMOD des Verzeichnisses auf 777 gesetzt???

Verfasst: Do 11.Aug, 2005 14:58
von blondi
Nimm mal zum Test meine ...
<?php
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
if ($userdata['user_level'] != ADMIN)
{
message_die(GENERAL_MESSAGE, 'nur für Admins');
exit;
}
//$cache_data_file = $phpbb_root_path."sitemap.xml";
$cache_data_file = $phpbb_root_path."sitemap.xml.gz";
if (@is_file($cache_data_file))
{
$valid = (date('YzH',time()) - date('YzH',@filemtime($cache_data_file))<23) ? true : false;
} else
{
$valid = false;
}

if ($valid )
{
message_die(GENERAL_MESSAGE, 'noch aktuell');
exit;
} else
{
// erzeugen Daten
$sitemap = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";

$sitemap .= "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\"\n";
$sitemap .= "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
$sitemap .= "xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84\n";
$sitemap .= "http://www.google.com/schemas/sitemap/0 ... p.xsd\">\n";

$sql = "SELECT MAX(topic_views) as maxviews FROM " . TOPICS_TABLE;
if ( !($result = $db->sql_query($sql)) ) message_die(GENERAL_ERROR, 'Could not obtain sitemap information', '', __LINE__, __FILE__, $sql);
$row = $db->sql_fetchrow($result);

$maxviews = $row['maxviews'];

$sql = "SELECT t.topic_id, t.topic_time, t.topic_views, t.topic_replies, p.post_time
FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f, " . POSTS_TABLE . " AS p
WHERE f.forum_id = t.forum_id
AND f.auth_view = " . AUTH_ALL . "
AND p.post_id = t.topic_last_post_id
ORDER BY t.topic_last_post_id DESC
LIMIT 50000";
if ( !($result = $db->sql_query($sql)) ) message_die(GENERAL_ERROR, 'Could not obtain sitemap information', '', __LINE__, __FILE__, $sql);


while ($row = $db->sql_fetchrow($result))
{
// Ausrechnen der avg. Aktualisierungszeit
//"always", "hourly", "daily", "weekly", "monthly", ("yearly" and "never")
$avgtime = ((time()-$row['topic_time'])/($row['topic_replies']+1))/3600;

if ($avgtime < 1) $changefreq = "always";
else if ($avgtime < 24) $changefreq = "hourly";
else if ($avgtime < 168) $changefreq = "daily";
else if ($avgtime < 5040) $changefreq = "weekly";
else $changefreq = "monthly";

//Priorität bezogen auf die Views (quadratisch)
$priority = round( sqrt($row['topic_views']/$maxviews), 1);
if ($priority >= 1) $priority = "1.0";
else if ($priority <= 0) $priority = "0.0";

//Zeit des letzten Beitrags
$iso8601_time = date('Y-m-d\TH:i:s', $row['post_time']) . substr(chunk_split(date('O',$row['post_time']), 3, ':'),0,6);

// Ausgabe der einzelnen Seiten
for($post=0; $post<=$row['topic_replies']; $post+=$board_config['posts_per_page'])
{
$add = ($post>0) ? "&start=".$post : "";
$sitemap .= "<url>\n";
$sitemap .= "<loc>http://".$board_config['server_name'].$board_config['script_path']."viewtopic.php?t=".$row['topic_id'].$add."</loc>\n";
$sitemap .= "<lastmod>".$iso8601_time."</lastmod>\n";
$sitemap .= "<changefreq>".$changefreq."</changefreq>\n";
$sitemap .= "<priority>".$priority."</priority>\n";
$sitemap .= "</url>\n";
}
}
$sitemap .= "</urlset>";

// Schreibe File
/* $fileName = fopen ($cache_data_file, 'w');
fputs ($fileName, $sitemap);
fclose ($fileName); */

$fileName = gzopen($cache_data_file, "w9");
gzwrite($fileName, $sitemap);
gzclose($fileName);
}
message_die(GENERAL_MESSAGE, 'Fertig');
?>

Verfasst: Do 11.Aug, 2005 14:59
von hemman
Ja das Verzeichnisses auf 777 gesetzt???

Verfasst: Do 11.Aug, 2005 15:25
von hemman
wie sieht sitemap.xml.gz aus.
Ich habe eine leere Seite als sitemap.xml.gz gespeichert.
Ist das richtig?
Wenn ich die nicht habe bringt er fehler...