SEO - no double-content

Kleine Codeänderungen oder Mini-MODs
Keine Anfragen!!! -- No requests!!!

Moderator: Supporter

SEO - no double-content

Beitragvon AmigaLink » 1. Okt 2005 22:37

Hier noch eine SEO-Maßnahme zur verhinderung einer double-content Wertung:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

includes/sessions.php

#
#----------[ FIND ]-------------------------------------
#

function append_sid($url, $non_html_amp = false)
{
global $SID;

#
#----------[ REPLACE WITH ]-----------------------------
#

function append_sid($url, $non_html_amp = false)
{
   global $SID,$HTTP_SERVER_VARS,$db,$board_config,$phpEx;
   if( strstr($url,'viewtopic.php') && !strstr($url,'viewtopic.php?replace') )
   {
      if( preg_match('#viewtopic.php\?'.POST_POST_URL.'=#', $url) )
      {
         $prg=str_replace("viewtopic.php?","",$url);
         parse_str($prg, $prg_output);

         $sql = "SELECT topic_id
         FROM " . POSTS_TABLE . "
         WHERE post_id = '".$prg_output[POST_POST_URL]."'";
         if ($result = $db->sql_query($sql))
         {
            $row = $db->sql_fetchrow($result);
            $prg_output[POST_TOPIC_URL] = $row['topic_id'];

            $sql = "SELECT post_id
            FROM " . POSTS_TABLE . "
            WHERE post_id < '".$prg_output[POST_POST_URL]."'
            AND topic_id = '".$prg_output[POST_TOPIC_URL]."'";
            if ($result = $db->sql_query($sql))
            {
               $c = $db->sql_numrows($result)+1;
               if ($board_config['posts_per_page'] < $c)
               {
                  $prg_output['start'] = floor(($c-1) / $board_config['posts_per_page']) * $board_config['posts_per_page'];
               }
            }
            if (isset($prg_output['start']))
            {
               $url = 'viewtopic.'.$phpEx.'?'.POST_TOPIC_URL.'='.$prg_output[POST_TOPIC_URL].'&start='.$prg_output['start'];
            }
            else
            {
               $url = 'viewtopic.'.$phpEx.'?'.POST_TOPIC_URL.'='.$prg_output[POST_TOPIC_URL].'#';
               unset($prg_output[POST_POST_URL]);
            }
         }
#         $url=$board_config['script_path']."$url";
      }
   }

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM

Und zwar werden hiermit die Direktlinks, zu Beiträgen, so umgeschrieben das der jeweilige Beitrag nicht mehr anhand seiner id aufgerufen sondern mittels Textanker angesprungen wird. Da die Textanker, in URLs, von Suchmaschinen nicht beachtet werden; Sehen diese nur die URL zum Topic, die sich ja nun nicht mehr ändert. :)

(Basiert auf diesen Codeschnipseln.)

Zugefügt nach 17 Tag(en) 21 Stunde(n) 23 Minute(n):

Ein Nachteil dieses Snippets sollte vielleicht noch erwähnt werden:
Da absolut jeder, mittels append_sid(), erstellte Link, in form von viewtopic.php?p=xxx, umgeschrieben wird; Erzeugt auch jeder dieser Links mindestens eine zusätzliche Querie. :? Das bedeutet, die Datenbankbelastung kann unter umständen nicht unerheblich sein und, je nach Server, das Board etwas verlangsamen. :(
Das betrift besonders Boards mit vielen Foren (index), einer hohen anzahl von Themen pro Seite (viewforum) und einer hohen Anzahl von Beiträgen pro Seite (viewtopic); Sowie umfangreichem Recent-Topics Listen!
Zuletzt geändert von AmigaLink am 12. Okt 2005 14:49, insgesamt 1-mal geändert.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 10. Okt 2005 14:57

Änderung um die erwähnte Datenbank- und Performance-Belastung in der Beitragsansicht (viewtopic) zu beheben:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

viewtopic.php

#
#----------[ FIND ]-------------------------------------
#

   $mini_post_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $postrow[$i]['post_id']) . '#' . $postrow[$i]['post_id'];

#
#----------[ REPLACE WITH ]-----------------------------
#

//  SEO
   if ( $postrow[$i]['post_id'] != $forum_topic_data['topic_first_post_id'])
   {
      if ($start)
      {
         $newest_posting = '&start=' . $start . '#' . $postrow[$i]['post_id'];
      } else {
         $newest_posting = '#' . $postrow[$i]['post_id'];
      }
   } else {
      $newest_posting = '';
   }

   $mini_post_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $postrow[$i]['topic_id']) . $newest_posting;
//   SEO

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM


Zugefügt nach 13 Minute(n):

Gleichwertige Änderungen an anderen Dateien folgen...
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 12. Okt 2005 12:05

Änderung um die erwähnte Datenbank- und Performance-Belastung in der Beitragsübersicht (viewforum) zu beheben:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

viewforum.php

#
#----------[ FIND ]-------------------------------------
#

      $last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $topic_rowset[$i]['topic_last_post_id']) . '#' . $topic_rowset[$i]['topic_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';

#
#----------[ REPLACE WITH ]-----------------------------
#

      //  SEO
      if ( $topic_rowset[$i]['topic_last_post_id'] != $topic_rowset[$i]['topic_first_post_id'])
      {
         if (($replies + 1 ) > $board_config['posts_per_page'])
         {
            $newest_posting = '&start=' . (ceil( ($replies + 1 ) / $board_config['posts_per_page'] - 1) * $board_config['posts_per_page']) . '#' . $topic_rowset[$i]['topic_last_post_id'];
         } else {
            $newest_posting = '#' . $topic_rowset[$i]['topic_last_post_id'];
         }
      } else {
         $newest_posting = '';
      }

      $last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_TOPIC_URL . '=' . $topic_rowset[$i]['topic_id']) . $newest_posting . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';
      //   SEO

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM

Gleichwertige Änderungen an weiteren Dateien folgen...
Zuletzt geändert von AmigaLink am 12. Okt 2005 14:19, insgesamt 1-mal geändert.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 12. Okt 2005 13:11

Änderung um die erwähnte Datenbank- und Performance-Belastung in der Forenübersicht (index) zu beheben:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

index.php

#
#----------[ FIND ]-------------------------------------
#

      case 'postgresql':
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
            FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u

#
#----------[ REPLACE WITH ]-----------------------------
#

      case 'postgresql':
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_id, t.topic_first_post_id, t.topic_last_post_id, t.topic_replies
            FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . TOPICS_TABLE . " t

#
#----------[ FIND ]-------------------------------------
#

            WHERE p.post_id = f.forum_last_post_id

#
#----------[ AFTER, ADD ]-------------------------------
#

               AND t.topic_id = p.topic_id 

#
#----------[ FIND ]-------------------------------------
#

      case 'oracle':
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id
            FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u

#
#----------[ REPLACE WITH ]-----------------------------
#

      case 'oracle':
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_id, t.topic_first_post_id, t.topic_last_post_id, t.topic_replies
            FROM " . FORUMS_TABLE . " f, " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . TOPICS_TABLE . " t

#
#----------[ FIND ]-------------------------------------
#

            WHERE p.post_id = f.forum_last_post_id(+)

#
#----------[ AFTER, ADD ]-------------------------------
#

               AND t.topic_id = p.topic_id(+)

#
#----------[ FIND ]-------------------------------------
#

      default:
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id

#
#----------[ REPLACE WITH ]-----------------------------
#

      default:
         $sql = "SELECT f.*, p.post_time, p.post_username, u.username, u.user_id, t.topic_id, t.topic_first_post_id, t.topic_last_post_id, t.topic_replies

#
#----------[ FIND ]-------------------------------------
#

            FROM (( " . FORUMS_TABLE . " f
            LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
            LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )

#
#----------[ REPLACE WITH ]-----------------------------
#

            FROM ((( " . FORUMS_TABLE . " f
            LEFT JOIN " . POSTS_TABLE . " p ON p.post_id = f.forum_last_post_id )
            LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_id = p.topic_id )
            LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )

#
#----------[ FIND ]-------------------------------------
#

                        $last_post .= '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $forum_data[$j]['forum_last_post_id']) . '#' . $forum_data[$j]['forum_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" border="0" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" /></a>';

#
#----------[ REPLACE WITH ]-----------------------------
#

                        //  SEO
                        if ( $forum_data[$j]['topic_last_post_id'] != $forum_data[$j]['topic_first_post_id'])
                        {
                           if (($forum_data[$j]['topic_replies'] + 1 ) > $board_config['posts_per_page'])
                           {
                              $newest_posting = '&start=' . (ceil( ($forum_data[$j]['topic_replies'] + 1 ) / $board_config['posts_per_page'] - 1) * $board_config['posts_per_page']) . '#' . $forum_data[$j]['topic_last_post_id'];
                           } else {
                              $newest_posting = '#' . $forum_data[$j]['topic_last_post_id'];
                           }
                        } else {
                           $newest_posting = '';
                        }

                        $last_post .= '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_TOPIC_URL . '=' . $forum_data[$j]['topic_id']) . $newest_posting . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';
                        //   SEO

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM

ACHTUNG - Nur getestet mit mySQL-Datenbanken!!!

Gleichwertige Änderungen an weiteren Dateien folgen...
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon AmigaLink » 12. Okt 2005 15:42

Für das SEO eigentlich unrelevant (Suchmaschinen nutzen eher selten die Suchfunktion des Boards ;)) aber durch das erste Snippet dieses Topics unerlässlich. Hier die Änderung um die erwähnte Datenbank- und Performance-Belastung bei der Anzeige der Suchergebnisse zu beheben:
Code: Alles auswählen
#
#----------[ OPEN ]-------------------------------------
#

search.php

#
#----------[ FIND ]-------------------------------------
#

         $post_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $searchset[$i]['post_id'] . "&amp;highlight=$highlight_active") . '#' . $searchset[$i]['post_id'];

#
#----------[ REPLACE WITH ]-----------------------------
#

         //  SEO
         if ( $searchset[$i]['post_id'] != $searchset[$i]['topic_first_post_id'])
         {
            if (($searchset[$i]['topic_replies'] + 1 ) > $board_config['posts_per_page'])
            {
               $sql = "SELECT post_id
               FROM " . POSTS_TABLE . "
               WHERE post_id < '" . $searchset[$i]['post_id'] . "'
               AND topic_id = '" . $searchset[$i]['topic_id'] . "'";
               if ($result = $db->sql_query($sql))
               {
                  $c = $db->sql_numrows($result)+1;
                  if ($board_config['posts_per_page'] < $c)
                  {
                    $prg_output['start'] = floor(($c-1) / $board_config['posts_per_page']) * $board_config['posts_per_page'];
                  }
               }
               (isset($prg_output['start'])) ? $posting = '&start=' . $prg_output['start'] . '#' . $searchset[$i]['post_id'] : '';
            } else {
               $posting = '#' . $searchset[$i]['post_id'];
            }
         } else {
            $posting = '';
         }

         $post_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . '=' . $searchset[$i]['topic_id'] . "&amp;highlight=$highlight_active") . $posting;
         //   SEO

#
#----------[ FIND ]-------------------------------------
#

            $last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $searchset[$i]['topic_last_post_id']) . '#' . $searchset[$i]['topic_last_post_id'] . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';

#
#----------[ REPLACE WITH ]-----------------------------
#

            //  SEO
            if ( $searchset[$i]['topic_last_post_id'] != $searchset[$i]['topic_first_post_id'])
            {
               if (($replies + 1 ) > $board_config['posts_per_page'])
               {
                  $newest_posting = '&start=' . (ceil( ($replies + 1 ) / $board_config['posts_per_page'] - 1) * $board_config['posts_per_page']) . '#' . $searchset[$i]['topic_last_post_id'];
               } else {
                  $newest_posting = '#' . $searchset[$i]['topic_last_post_id'];
               }
            } else {
               $newest_posting = '';
            }

            $last_post_url = '<a href="' . append_sid("viewtopic.$phpEx?"  . POST_TOPIC_URL . '=' . $searchset[$i]['topic_id']) . $newest_posting . '"><img src="' . $images['icon_latest_reply'] . '" alt="' . $lang['View_latest_post'] . '" title="' . $lang['View_latest_post'] . '" border="0" /></a>';
            //   SEO

#
#----------[ SAVE AND CLOSE ALL FILES ]-----------------
#
# EoM

Somit wäre nun ein Standard phpBB (Vanilla) nun komplett angepasst. 8)

Es werden aber noch weitere Snippets folgen, um z.B den Categories hierarchy MOD anzupassen.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon mgutt » 3. Jan 2006 17:06

wie in einem anderen beitrag erwähnt dürfte das wohl der mod sein, den ich schon länger suche ;)

ist das die finale version?

meine bisherige für die viewtopic.php:
(keine datenbankbelastung)
Code: Alles auswählen
//-- mod : suma urls -----------------------------------------------------------
//-- delete
/*
   $mini_post_url = append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $postrow[$i]['post_id']) . '#' . $postrow[$i]['post_id'];
*/
//-- add
   $not_first_page = !empty($start) ? "&amp;start=" . $start : '';
   $mini_post_url = append_sid("viewtopic.$phpEx?" . POST_TOPIC_URL . "=$topic_id" . $not_first_page) . '#' . $postrow[$i]['post_id'];
//-- fin mod : suma urls -------------------------------------------------------
mgutt
User
 
Beiträge: 63
Registriert: 14. Okt 2004 22:23

Beitragvon AmigaLink » 4. Jan 2006 14:15

Auf meinen Boards läuft dieses System bereits sehr lange ohne Probleme. Von daher könnte man diese Snippets durchaus als Final bezeichnen. :)
Ich bin nur noch nicht dazu gekommen die Codeänderungen für den CH 2.0.5 rc2 hier zu Posten, der ja hier und auf EmF läuft.

Die, im erstem Beitrag, erwähnte Datenbankbelastung titt übrigens nur an den stellen auf, die nicht nochmals gesondert umgeschrieben wurden (also bei dateien die von diverse MODs sind)!
Denn die Änderung der session.php fängt alle viewtopic.php?p=xxx links ab und ersetzt sie gegen viewtopic.php?t=xxx#xxx bzw. (falls nötig) gegen viewtopic.php?t=xxx&start=xxx#xxx.
Ist also eine reine Sicherheitsmaßnahme, durch die auch stark gemoddete Boards komplett ohne p= links laufen. 8)

Zugefügt nach 1 Minute(n):

Wo hast du deine viewtopic Änderungen her?
Hätte ich mir die Arbeit sparen können weil es bereits einen diesbezüglichen MOD gibt? :?

Zugefügt nach 4 Stunde(n) 37 Minute(n):

Hat sich erledigt. Bin gerade über deine Anfrage auf phpbb.de gestolpert. :)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon mgutt » 4. Jan 2006 15:17

ich versuchs mal komplett ohne datenbank ;)

damit schreibe ich zwar das komplette forum um, aber der gewinn ist mit lieber :D

ich glaube das ist genau der richtige ansatz das forum zu verbessern.

wobei ich auch festgestellt habe, dass großen foren wie autoextrem.de z.b. sich überhaupt nicht dafür interessieren. sie lassen einfach alles crawlen. masse scheint ab einem gewissen pagerank genauso gut zu sein ;)
mgutt
User
 
Beiträge: 63
Registriert: 14. Okt 2004 22:23

Beitragvon AmigaLink » 4. Jan 2006 16:35

<!-- BEGIN Off_Topic -->
Der ganze SEO Hype ist ein wenig übertrieben!

Wenn ich mir ansehe wie stark meine alte de-Domain (von EmF) in den Suchmaschinen vertreten ist, obwohl sie bereits seit über einem Jahr auf die info-Domain weiterleitet und vorher keinerlei SEO maßnahmen daran getroffen wurden (ausser abschalten der SID für Gäste). Dann kann ich nur zu dem Schluss kommen das man es damit nicht übertreiben sollte!

Ich gehe deswegen auf all meinen Boards nur noch hin und unterbinde HiJacking und double-content gefahren, sowie ein paar andere kleinigkeiten.

Das reicht vollkommen aus!
<!-- END Off_Topic -->
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon andinator » 1. Feb 2007 22:52

hallo!
ich habe diesen Snippet eingebaut, doch sobald ein Thema über
&view=newest
abgerufen wird, sind wieder die alten links da.
Die Bots dürften an diese Links zwar nicht kommen, aber es stört trotzdem.
Hast du eine Idee wie ich das lösen kann?

EDIT:
und bei links die zu einem thema führen das nur eine seite hat werden die sprungmarken mit ## angehängt, was natürlich nicht funktioniert

EDIT2:
überhaupt funktioniert es irgendwie bei themen die nur eine seite haben nicht so recht :-(
Benutzeravatar
andinator
 
Beiträge: 7
Registriert: 1. Feb 2007 22:50

Nächste

Zurück zu phpBB2 Snippets



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron