Sitemap für "SEO Urls V2"

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Kortirion
Mitglied
Beiträge: 485
Registriert: 03.05.2004 05:07
Wohnort: Kassel
Kontaktdaten:

Beitrag von Kortirion »

Über das "monthly" könnte man sich unterhalten. ;)

Was die Seiten ausserhalb des Forums angeht: Ich denke, das ist im Normalfall nicht so das große Problem. Wer sowas wie Mitgliederliste, Partberseite, Downloads etc. mit in der Sitemap haben will, der kann die paar Seiten sicher auch händisch am Ende einfügen. Im Normalfall sollten das ja nur sehr wenige sein.

Ob die Ausgabe als xml und die generierung per cronjob viel bringt, will ich erst mal abwarten. Die Frage ist ja, wie oft google die sitemap holt. Nach allem was man über sitemaps so liest, ist das ja ohnehin nur einmal pro Tag oder alle paar Tage der Fall. Dann wäre die Last ohne Cronjob genau so groß bzw. sogar geringer. ;)

Ein Vorteil von der xml-Ausgabe wäre, dass man die Seite gzippen kann. Ob das nötig ist, werde ich auch mal beobachten. Google gibt ja an, dass eine Sitemap bis zu 50.000 Einträge haben darf und bis zu 10 MB groß sein darf. Davon bin ich jedenfalls im Moment noch weit entfernt. ;)
...mehr über mich: www.kortirion.de oder www.schwarzer-humbug.de ...oder auch nicht...egal.
Neuestes Projekt: www.das-buchforum.de
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Darum gehts nicht. Eine gecachte Datei ist viel schneller geladen, als wenn der erst Deine Datenbank quälen muss. Weiterhin hast Du keine Kontrolle wann Google kommt. Wenn Google kommt wo Dein Forum gerade brennt, dann ist die zusätzliche Last unangebracht.

Mit den paar Einzelseiten hast Du recht. Aber was ist z.B. mit der Knowledgebase. Jeder muss sich im klaren sein, wenn er noch andere wichtige Seiten hat, dass er diese mit integrieren muss.

Wie sind denn die Erfahrung wegen der Reihenfolge? Ich mein ist es egal, wenn ich z.B. erst alle Topics und dann z.B. Einträge aus der Knowledge Base folgen lasse?
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Kortirion
Mitglied
Beiträge: 485
Registriert: 03.05.2004 05:07
Wohnort: Kassel
Kontaktdaten:

Beitrag von Kortirion »

Klar, wenn man komplexe Seuten aussrhalb des Forums hat, wie z.B. Knowledgebase oder Nickpage, dann ist da nix mehr mit "per Hand". Bei mir trifft das aber nicht zu. ;)

In solchen Fällen müsste man sich in der Tat Gedanken darüber machen, ob man nicht auch diese Seiten in der sitemap automatisch generiert.

Wegen dem cronjob werde ich mir mal Gedanken machen.

Womit ich mich aber überhaupt nicht auskenne, ist gzip.

Ist der Code für gzip so ok?

Code: Alles auswählen

<?php
/***************************************************************************
*
* Created:   Thursday, June 9, 2005 (Second to last day of Uni!)
* Author:   NeoThermic
* Modified:   fanrpg
*         Kortirion, Sunday, July 2, 2006
***************************************************************************/

/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
@set_time_limit(360);
ob_start('ob_gzhandler');
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//for testing, just mod this to be the base URL of your forums.
$secure = $board_config['cookie_secure'] ? 'https://' : 'http://';
$baseURL = $secure.$board_config['server_name'].$board_config['script_path'];

//we do this for hosts that have short tags enabled...
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
   <url>
      <loc><?php echo $baseURL; ?></loc>
      <lastmod><?php echo date("Y-m-d"); ?></lastmod>
      <changefreq>always</changefreq>
      <priority>0.8</priority>
   </url>
<?php

//we need to set up an array so that we can store the fourm_id's of any fourm that has a auth_view larger than 0
$hidtopic = array();
$sql = 'SELECT forum_id, forum_name, forum_desc, auth_read FROM '.FORUMS_TABLE.' ORDER BY forum_name';
if( !($result = $db->sql_query($sql)) )
{
   message_die(CRITICAL_ERROR, "Could not query forum auth information", "", __LINE__, basedir(__FILE__), $sql);
}

while ( $row = $db->sql_fetchrow($result) )
{
   $forum_name = $row['forum_name'];
   if ($row["auth_read"] < 1)
   {
   //note, we have the code de-tabbed like this to provide a cleaner output...
   echo '
   <url>
      <loc>'.$baseURL.append_sid('viewforum.php?f='.htmlspecialchars($row["forum_id"])).'</loc>
      <changefreq>daily</changefreq>
      <priority>0.8</priority>
   </url>';
   }
   else
   {
      //add fourm_id of the one here to an array
      $hidtopic[]= $row["forum_id"]; //ok, we now have populated the array with the fourm_ID of the hidden topics
   }
}

//ok, now we mod the below so that it reads fourm_id as well
$sql = "SELECT t.topic_title, t.topic_id, t.topic_replies, t.forum_id, p.post_time
   FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
   WHERE p.post_id = t.topic_last_post_id
   ORDER BY p.post_time DESC";

if( !($result = $db->sql_query($sql)) )
{
   message_die(CRITICAL_ERROR, "Could not query topic information", "", __LINE__, basedir(__FILE__), $sql);
}

if( $db->sql_numrows($result) >= 50000 )
{
   message_die(CRITICAL_MESSAGE, "Sitemap generated will be too large. Please modify file to make multiple sitemaps.");
}

$i = 0;
while($row =  $db->sql_fetchrow($result))
{
   if ($hidtopic[$i] != $row["forum_id"])
   {
      //if we get here, then the fourm_id of the post in question can be displaied...
      //same tabbing reason as above

      //Do tell thee, how many pages does one have?
      $perpage = $board_config['posts_per_page'];
      $numpages = intval($row['topic_replies']/$perpage);

      if ($numpages == 0)
      {
         $topic_title = $row['topic_title'];
         echo '
            <url>
               <loc>'.$baseURL.append_sid('viewtopic.php?t='.htmlspecialchars($row["topic_id"])).'</loc>';
            if ((time() - $row['post_time']) < 2600000)
            {
               echo '
                  <lastmod>'.date('Y-m-d',$row['post_time']).'</lastmod>
                  <priority>0.8</priority>
               </url>';
            }
            else
            {
               echo '
                  <changefreq>monthly</changefreq>
                  <priority>0.5</priority>
               </url>';
            }
      }
      else
      {
         for ($j = 0; $j < ($numpages+1); $j++)
         {
            $topic_title = $row['topic_title'];
            $start = $j * $perpage;
            echo'
               <url>
                  <loc>'.$baseURL.append_sid('viewtopic.php?t='.htmlspecialchars($row["topic_id"]).'&start='.$start).'</loc>';
            if ((time() - $row['post_time']) < 2600000)
            {
               echo '
                  <lastmod>'.date('Y-m-d',$row['post_time']).'</lastmod>
                  <priority>0.8</priority>
               </url>';
            }
            else
            {
               echo '
                  <changefreq>monthly</changefreq>
                  <priority>0.5</priority>
               </url>';
            }
         }
      }
   }
$i++;
}

$sql = "SELECT u.username, u.user_id FROM ".USERS_TABLE." u WHERE u.user_active = 1 AND u.user_active != '-1' ORDER BY u.user_id ASC";
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result) )
{
   echo'
   <url>
      <loc>'.$baseURL.append_sid('profile.php?mode=viewprofile&u='.$row['user_id']).'</loc>
      <changefreq>monthly</changefreq>
      <priority>0.3</priority>
   </url>';
}
?>
</urlset>
<?php
$xml = ob_get_contents();
ob_end_clean();
if( ($handle = gzopen('sitemap.xml.gz', 'w9')) )
{
   gzwrite($handle, $xml);
   gzclose($handle);
}
else
{
   echo $xml;
}
?>
...mehr über mich: www.kortirion.de oder www.schwarzer-humbug.de ...oder auch nicht...egal.
Neuestes Projekt: www.das-buchforum.de
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Also mit gz und so kenne ich mich nicht aus, aber ist das nicht sinnvoller?

Code: Alles auswählen

<?php
// Copyright
ob_start();

// Anderer Krams

$xml = ob_get_contents();
ob_end_clean();
$xml = gzcompress($xml);
if( ($handle = gzopen('sitemap.xml.gz', 'w9')) ) 
{ 
   gzwrite($handle, $xml); 
   gzclose($handle); 
} 
else 
{ 
   echo $xml; 
}
btw. was ist mode 'w9' ? Ich kenn nur w oder w+

Und ob eine GZip Komprimierung so sinnvoll ist? So gross ist ja so eine XML Datei auch wieder nicht.
Kortirion
Mitglied
Beiträge: 485
Registriert: 03.05.2004 05:07
Wohnort: Kassel
Kontaktdaten:

Beitrag von Kortirion »

zum "mode":

http://php-resource.de/manual.php?p=function.gzopen

Demnach kann man die Komprimierungsstrategie oder den Komprimierungslevel angeben. 9 ist die beste Komprimierung...getestet und funktioniert so bei mir.

Naja...im Moment wird die sitemap-größe bei mir durch gzip von ca. 40Kb auf 24Kb reduziert...man stelle sich vor, das Forum wird größer...;)

Zu Deinem Codevorschlag: Keine Ahnung! Wie gesagt...ich kenne mich eigentlich mit dem ganzen zlib-Kram nicht aus...vielleicht kann jemand anderes was dazu sagen?
...mehr über mich: www.kortirion.de oder www.schwarzer-humbug.de ...oder auch nicht...egal.
Neuestes Projekt: www.das-buchforum.de
Benutzeravatar
Beagleman
Mitglied
Beiträge: 126
Registriert: 30.06.2006 14:07
Kontaktdaten:

Beitrag von Beagleman »

In den bisherigen Codes richtet sich die Priorität nach dem letzten Beitrag eines Themas. Ist im Thema erst kürzlich gepostet worden, gibt es eine höhere Priorität.

Google sagt zum Thema Priorität:
Die Priorität, die Sie einer Seite zuordnen, hat keinen Einfluss auf die Position Ihrer URLs in den Ergebnisseiten einer Suchmaschine. Diese Information wird von den Suchmaschinen lediglich zur Auswahl zwischen URLs derselben Website genutzt. Die Verwendung dieses Tags erhöht somit die Wahrscheinlichkeit, dass Ihre wichtigeren Seiten im Suchindex aufgeführt werden.
Wäre es dann nicht sinnvoller die Priorität nach der Anzahl der topic-views zu vergeben? Je häufiger ein Thema gelesen wird, um so wichtiger scheint es doch zu sein. Entsprechend würde Google genau diese Seiten eher im Suchindex aufführen.
Zuletzt geändert von Beagleman am 19.08.2006 19:48, insgesamt 1-mal geändert.
Kortirion
Mitglied
Beiträge: 485
Registriert: 03.05.2004 05:07
Wohnort: Kassel
Kontaktdaten:

Beitrag von Kortirion »

Ich würde sage, da ist in jedem Fall was dran, man kann das aber nicht verallgemeinern.

Jeder hat da sicher für sich selbst andere Vorstellungen, welche Seiten des eigenen Projekts "wichtiger" sind. Mir persönlich z.B. wäre es wichtiger, dass Themen höher bewertet werden, die die neuern beiträge haben, da es diese sind, von denen ein aktives Forum lebt und die es interessant machen. Was nützt mir ein Thema mit tausenden von views, das aber schon seit Monaten auf Seite X verschwunden ist? ;)
...mehr über mich: www.kortirion.de oder www.schwarzer-humbug.de ...oder auch nicht...egal.
Neuestes Projekt: www.das-buchforum.de
Benutzeravatar
Beagleman
Mitglied
Beiträge: 126
Registriert: 30.06.2006 14:07
Kontaktdaten:

Beitrag von Beagleman »

Ich verstehe was du meinst.
Andererseits könnte man argumentieren: Was nützt es einem, dass ein Thema hoch priorisiert wird, in welchem zufällig kürzlich irgendein Heini einen völlig belanglosen Text gepostet hat?

Optimal wäre eine gesunde Mischung.
Zuletzt geändert von Beagleman am 19.08.2006 19:47, insgesamt 1-mal geändert.
Kortirion
Mitglied
Beiträge: 485
Registriert: 03.05.2004 05:07
Wohnort: Kassel
Kontaktdaten:

Beitrag von Kortirion »

Hmmm...Mischung wäre nix für mich...aber klar kann man auch das vertreten. ;)

Ich würde sagen, das hängt wirklich stark vom Forum ab, in dem man die sitemap einsetzen will.

In meinen beiden hauptprojekten z.B. gibt es keine "Forenspiele" oder Endlosthreads á la was hört ihr grade oder so. bei diesen würde ich die Gefahr sehen, dass es ungünstig wäre, wenn man nach neuesten Beiträgen priorisiert, weil in solchen Threads ja ständig neue Beiträge geschrieben werden, die Themen aber ja nicht grade gehaltvoll sind.
Bei mir ist es eher so, dass viele aktuelle Sachen wie Parties, veranstaltungen etc. relevant sind - ein Fall also, wo es relativ weniger Posting und auch views gibt, aber grade die Aktualität wichtig ist.

Ich bin somit mit der Priorisierung in fanrpg's und meiner Modifikation der sitemap so zufrieden.

Du kannst aber ja gerne eine weitere Variante schreiben, bei der die topicviews als Kriterium herangezogen werden. :)
...mehr über mich: www.kortirion.de oder www.schwarzer-humbug.de ...oder auch nicht...egal.
Neuestes Projekt: www.das-buchforum.de
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Beagleman hat geschrieben:Ich verstehe was du meinst.
Andererseits könnte man argumentieren: Was nützt es einem, dass ein Thema hoch priorisiert wird, in welchem zufällig kürzlich irgendein Heini einen völlig belanglosen Text gepostet hat?

Optimal wäre eine gesunde Mischung.
Ich denke Dein Argument ist gut. Ich kann auf eine gesunde Mischung verzichten: (maxrev=meine seite)
http://www.google.de/search?hl=de&q=honda+links&meta=
http://www.google.de/search?hl=de&q=fel ... ller&meta=
http://www.google.de/search?hl=de&q=hon ... lder&meta=
http://www.google.de/search?hl=de&q=hon ... lder&meta=
http://www.google.de/search?hl=de&q=tftf&meta=
usw.

Denn wenn dort plötzlich Beiträge mit schlechtem Content landen, dann wäre das eher von Nachteil.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“