sitemap.php/feeds.php und Double Content

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Olli_another_one
Posts: 48
Joined: Sun 25. Mar 2007, 01:03
Contact:

sitemap.php/feeds.php und Double Content

Post by Olli_another_one »

Hallo,
ich sehe folgendes Problem - Die Links in sitemap.php und feeds.php werden mit der aid generiert. Das Ganze ist nett wenn man kein Rewriting einsetzt.
Wenn man aber darauf bedacht ist, für alle Seitenebnen einen Alias zu haben, (damit ein paar Keywords fürs Ranking zusätzlich generiert werden), ist das mit der aid außerst hinderlich da Google beispielsweise 2 Möglichkeiten hat an den Content zu kommen ... einmal über den Strukturebenealias ( /meintoller-alias.phtml ) und einmal über die aid ( /index.php?aid=100 ). Das führt zu einer klassischen "Double Content" Problematik.

Wenn man auf dein Einsatz von sitemap.php nicht verzichten will ( weil es ja auch ziemlich praktisch ist ) aber die DC Sache vermeiden will was macht man an dieser Stelle?

Olli

außerdem - wie seht Ihr die Sache?
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

Das frage ich mich auch gerade ;-)
es gibt es ja jetzt mehrere url optionen beim rewriting

aid=123.phtml
12.23.0.0.0.1.0.phtml
alias.phtml

ich hatte bis jetzt keine probleme mit meinen seiten und doppelten inhalten, aber ein kunde legt wert darauf und in dieser angelegenheit (googleindex) kann man kurzfristig nix ändern, sondern man kann nur beobachten.

Kann vielleicht jemand eine aussage treffen?

grüße
marcus
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

Hi,
also ich habe mich kurz mit der sache befasst und tesste jetzt folgendes:

1. robots.txt sieht so aus:

Code: Select all

User-agent: *
Disallow: /index.php?
Disallow: /feeds.php?
Disallow: /content/images/
Disallow: /image_zoom.php?
Disallow: /img/
Disallow: /picture/
damit schliesse ich erstmal alle index.php?parameter urls aus, die auftauchen können (gleichzeitig auch, die pdf print links auf jeder seite)

evt. könnte man auch noch:
Disallow: /aid=*.phtml
ausschliessen

2. sitemap.php habe ich die linkgenerierung geändert, wie es am häufigsten vorkommt:

Code: Select all

$_link = PHPWCMS_URL.''.$data["article_cid"].'.'.$data["article_id"].'.0.0.1.0.phtml';
gerade bei punkt 2 habe ich im moment keine ahnung ob das korrekt so ist (weil die zeile eigendlich auskommentiert war) - aber ich denke schon.
Ansonsten ist die sitemap ja nur ein anhaltspunkt für google, ich denke das wird sowieso alles nochmal gecrawlt.

Bin mal gespannt was das wird...
Wenn noch jemand erfahrungen/ideen mitteilen kann, wäre das sehr schön ;-)

grüße
marcus
Olli_another_one
Posts: 48
Joined: Sun 25. Mar 2007, 01:03
Contact:

Post by Olli_another_one »

Also lt sogut wie allen SEO Seiten ist Double Content richtig böse.
Mir ist in den letzten Tagen ein Artikel richtig abgestürzt und ich schieb es auf diese Double Content Problematik. Ob ich damit recht habe oder nicht wird sich Rausstellen.
Der Punkt ist einfach das eine Seite über mehrere Wege ansprechbar ist.
Die Sitemap ist wie der Name schon sagt ein "Inhaltsverzeichnis" der Webseite - wenn man Google sagt "Nimm die URLs aus sitemap.php und crawle die" wird Google feststellen das ebend dieser Inhalt doppelt auf der Webseite ist (ich hoffe ich habe mich jetzt nicht zu kompliziert ausgedrueckt) - also egal ob und wie ... meiner Meinung nach bleibt es Double Content.
Am besten wäre es wohl wenn URLs so aussehen: http://www.domain.tld/strukturebenenalias/artikelalias wobei die Aliase aus den Überschriften der einzelnen Ebenen/Artikel generiert werden. Es gibt aber "noch" keine Artikelaliasnamen.
However - die Idee mit der robots.txt ist gut aber wohl nicht ausreichend zur Lösung des Problems denke ich.
Auch nutzt die umgeschriebene Sitmap URL-Generierung nichts wenn man Wert auf Aliase legt (Aliasnamen sind Keywords wenn sie per Bindestrich getrennt werden)
Olli
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

Hallo Ihr's,

zur Ausgangsfrage habe ich momentan keine Antwort parat.
Allerdings habe ich ganz am Anfang meiner Aktivität hier im Forum schon einmal den Begriff "rewrite-faxen" verwendet.
Flip-Flop fand das gar nicht nett.

Würde das auch nur eingeschränkt unter usability o.ä. einordnen wollen. Der Großteil der [normal-]User schaut auf die Seiten, nicht auf die Adresszeile.

Meiner Erfahrung nach ist es das völlig irrelevant bzw. mindestens sekundär. Klar schaut man bei den Sucherebnissen schon auch mal auf den URL [unsereins]. Viel wichtiger, weil aussagefähiger, sind doch title, h1, strong, em und dgl. Das sind ja auch letztlich die entsprechend hervorgehobenen, unübersehbaren Ergebnisse im Listing.

Glaube auch nicht, dass sich Google und Co "an der Nase herumführen lassen" wenn doch die vermeintlichen Unterverzeichnisse physikalisch gar nicht vorhanden sind.

Kenne auch die kundenseitigen Irritationen [grosse Augen]. Insofern bin ich auch prinzipiell an einer Klärung interessiert.

Allerdings fahre ich derzeit mit den WebmasterTools und den dort hinterlegten Sitemaps sehr gut: alle Sites [ohne rewrite-faxen] bis in die letzte Ecke indiziert und ebenso übersichtlich im Ergebnis präsentiert.
(Bezweifle ebenso einen Einfluss auf Ranking in Abhängigkeit vom URL.)

Meine Empfehlung: auf rewrite verzichten und vielmehr die Struktur der Seiten für eine Indizierung optimieren.

Wie gesagt, das ist nicht die Lösung dieser Frage, aber in vielerlei Hinsicht problemloser, denke ich.

Greetz
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

http://googlewebmastercentral-de.blogsp ... ei_08.html

ich halte gescheiten content und gut ausgezeichnete seiten auch für sinnvoller als dieses ganze SEO gedöns, aber manche legen halt wert drauf.
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

danke für den link, prima info!

einziges problem in diesem zusammenhang und vor kurzem bereits angesprochen worden --> http://www.phpwcms.de/forum/viewtopic.php?t=14772
wäre, dass sich auch bei meinen sites die printansichten "reingemogelt" haben.

In dem Artikel in der "Webmasterzentrale" (siehe Link oben) wird explizit genau dieses Thema (nur kurz) erwähnt, wobei demnach aber eine Möglicheit besteht, die Druckansicht mittels robots.txt zu blockieren. Nur, wie müsste diese Disallow-Zeile aussehen bzw. lauten?????
Hast Du/Ihr ne Vorstellung???

Alternative wäre natürlich auch, die Print-Links rauszuschmeissen und durch PrintPDF (v1.3.3) zu ersetzen.


Des weiteren habe ich den [subjektiven] Eindruck, dass die Sessions beim ersten Seitenaufruf in phpwcms für Google Analytics nicht ganz so optimal sind. So beobachte ich dort zahlreiche Aufrufe, die in der Summierung/Tracking "herausfallen" bzw. außen vor bleiben - jedenfalls auffällig (oft) isoliert "da rum baumeln", so zu sagen.

Bin mir da aber nicht sicher und werde mir das mal genauer anschauen [müssen].
Olli_another_one wrote:Wenn man aber darauf bedacht ist, für alle Seitenebnen einen Alias zu haben, (damit ein paar Keywords fürs Ranking zusätzlich generiert werden)...
Zugegeben, da habe ich bislang ebenfalls aus genau diesem Grund auch immer "penibelst" drauf geachtet.
Erfreulich ist insofern (seit v.1.3.3), dass man dediziert jedem Artikel einen Titel [zusätzlich zum <h1>-Tag] vergeben kann --> Seitentitel. Die Eingaben dort überschreiben das (ursprünglich einmalig) zentral festgelegte Schema: SITE | CATEGORY | (artikel)TITLE

Greetz
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

google hat in seinen webmaster/sitemap tools ein - tool eben - um die einträge der robots.txt auf spezielle URLS zu prüfen, wenn du einen account hast dort, teste das mal.

Das müsste funktionieren:

Code: Select all

Disallow: index.php?*print*
Wie in dem anderen Thread beschrieben, ich bevorzuge es die extra printseite aussen vor zu lassen und die seite über die browserdruckfunktion und nem extra stylesheet ausdrucken zu lassen.
Wenn man das nicht möchte, dann müsste man in die printansicht entweder ein <meta noindex> (also das meta tag für robots ;-)) in den header schreiben (da die index.php genutzt wird, muss man halt den parameter prüfen und wenn print=1 dann das Tag in den header einfügen. kann man über frontend_render machen oder im template mit [PHP] - behaupte ich jetzt kühn.

Alternativ kann man halt den printlink in einen onclick link ändern oder das von google eingeführte rel="nofollow" attribut.

ich nehme an, google mag die printansichten, weil da kein großartiger html-firlefanz drin steht, sondern nur der wichtige content.

für die sessionid beim ersten aufruf, kannst du den php.ini wert
session.use_trans_sid off setzen.

(in der .htaccess mit php_flag session.use_trans_sid off oder in php mit ini_set("session.use_trans_sid","off"))

dabei wird keine sessionid mehr an die url angehängt, wenn cookies ausgeschalten sind (un beim ersten aufruf auch nicht mehr).
ich denke das beeinträchtigt die funktion deiner seite nicht, ausser du arbeitest im fronend mit sessions um - was weiss ich - benutzereingaben zu speichern (beim warenkorb hatte ich mich mit der thematik rumgeschlagen)

- nochbesser in version 1.3.3 ist, das man die reinfolge der TITLE eingaben im Seitenlayout ändern kann, also in "Artikeltitel | Cat | Sitename"
das ist meines erachtens besser, weil der artikeltitel auch wirklich in den Ergebnissen auftaucht und nicht am anfang immer der gleiche Sitename - der oftmals sehr lang gewählt wird ;-))

so, das ist jetzt alles was ich dazui weiss ;-)

grüße
marcus
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

marcus@localhorst wrote:...Das müsste funktionieren:

Code: Select all

Disallow: index.php?*print*
...
nee, aber das offenbar:

Code: Select all

Disallow: *print

Code: Select all

Googlebot meint dazu:
http://www.mysite-xyz.de/ 	Allowed

http://www.mysite-xyz.de/index.php?aid=114&print=1 	Blocked by line 4: Disallow: *print
marcus@localhorst wrote:...nochbesser in version 1.3.3 ist, das man die reinfolge der TITLE eingaben im Seitenlayout ändern kann, also in "Artikeltitel | Cat | Sitename"
das ist meines erachtens besser, weil der artikeltitel auch wirklich in den Ergebnissen auftaucht und nicht am anfang immer der gleiche Sitename - der oftmals sehr lang gewählt wird ;-))...
stimmt!!
marcus@localhorst wrote:...so, das ist jetzt alles was ich dazui weiss ;-)
prima, das war's doch was ich brauchte...

Vielen Dank erst einmal hierfür.
Bzgl. Sessions etc. teste ich mal weiter.

Greetz
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
User avatar
Jensensen
Posts: 3000
Joined: Tue 17. Oct 2006, 21:11
Location: auf der mlauer

Post by Jensensen »

jetzt müssten wir aber noch ne lösung finden für anotherOlli's ausgangsproblem, dass bei rewrite die links im feed und der sitemap nicht entsprechend erscheinen.

die frage kann sicher Olli No.1 am besten beantworten?!?!?

greetz
{so_much} | Knick-Knack. | GitHub
Umlaute im URL sind meistens immer Kacke.
eh100091
Posts: 54
Joined: Sat 10. Jul 2004, 09:01
Location: Mauthausen
Contact:

Post by eh100091 »

Das ist ein interessanter Hinweis von Euch gewesen. Man müsste in der Abfrage die Tabelle actriclecat mit einbinden.

Des selbe Problem hat man im Teaser - dieser wird auch mit der id=... ausgegeben.

Mir wäre schon geholfen, wenn man das gesamte phpWCMS da einfach auf eine Linie bringen könnte. zB alle Artikel mit ihrer ID !
Ideal wäre natürlich der Name.

PS.: Jetzt, wo die sitemap.php von sämtlichen Sachmaschinen über robots.txt ausgelesen wird, ist das umso wichtiger einen einheitliche Linie zu bekommen.

ob phtml oder index?... wäre ja auch egal.
Best regards from Upperaustria
Schoene Gruesse aus Oberoesterreich

http://horners.at

Peter
eh100091
Posts: 54
Joined: Sat 10. Jul 2004, 09:01
Location: Mauthausen
Contact:

Post by eh100091 »

Ich habe im Skript sitemap.php die 2. Tabellenabfrage ergänzt.
Jetzt kommen alle Sitemaps mit "alias.phtml" heraus. Bis auf aid=1, die wird auf die Domäne umgeschrieben.
Den Google ist es anscheinend auch recht ...

Code: Select all

<?php
/*************************************************************************************
   Copyright notice
   
   (c) 2002-2007 Oliver Georgi (oliver@phpwcms.de) // All rights reserved.
 
   This script is part of PHPWCMS. The PHPWCMS web content management system 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.
  
   The GNU General Public License can be found at http://www.gnu.org/copyleft/gpl.html
   A copy is found in the textfile GPL.txt and important notices to the license 
   from the author is found in LICENSE.txt distributed with these scripts.
  
   This script is distributed in the hope that it will be useful, but WITHOUT ANY 
   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
   PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
   This copyright notice MUST APPEAR in all copies of the script!

   alias function included Horner Peter 2007/05/24
*************************************************************************************/

// build Google Sitemap based on available articles

require_once ('config/phpwcms/conf.inc.php');

// set neccessary charset
$phpwcms["charset"] = 'utf-8';
require_once ('include/inc_lib/default.inc.php');
require_once (PHPWCMS_ROOT.'/include/inc_lib/dbcon.inc.php');
require_once (PHPWCMS_ROOT.'/config/phpwcms/conf.indexpage.inc.php');
require_once (PHPWCMS_ROOT.'/include/inc_lib/general.inc.php');
require_once (PHPWCMS_ROOT.'/include/inc_front/front.func.inc.php');

// start XML 
echo '<?xml version="1.0" encoding="utf-8"?>'.LF;
echo '<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">'.LF;
echo '	<!-- Google Sitemap, http://www.google.com/webmasters/sitemaps/ -->'.LF.LF;


//reads complete structure as array
$struct	= get_struct_data();

// fallback value when no article available
$base	= true;

// now retrieve all articles
$sql  =	"SELECT article_id, article_cid, DATE_FORMAT(article_tstamp, '%Y-%m-%d') AS article_tstamp, ";
$sql .= "article_title, article_redirect, article_aliasid ";
$sql .= "FROM ".DB_PREPEND."phpwcms_article WHERE ";
$sql .= "article_public=1 AND article_aktiv=1 AND article_deleted=0 AND article_nosearch!='1' AND ";
$sql .= "article_nositemap=1 AND article_begin < NOW() AND article_end > NOW() ";
$sql .= "ORDER BY article_tstamp DESC";


if($result = mysql_query($sql, $db)) {

	while($data = mysql_fetch_assoc($result)) {
	
		// first proof if this article is within an "public" structure section
		$_CAT = $struct[$data['article_cid']];
		if($_CAT['acat_regonly'] || $_CAT['acat_nosearch']=='1' || !$_CAT['acat_nositemap']) {
			// no it is no public article - so jump to next entry
			continue;
		}
		
		// now add article URL to Google sitemap
		//$_link = PHPWCMS_URL.'index.php?id='.$data["article_cid"].','.$data["article_id"].',0,0,1,0';
		//Horner edit
		$sql_name = "SELECT acat_alias FROM ".DB_PREPEND."phpwcms_articlecat WHERE acat_id=".$data["article_cid"];
		$result_name = mysql_query($sql_name,$db);
		if(($datensatz = mysql_fetch_row($result_name)) && !($datensatz[0] == "")) {
			$_link = PHPWCMS_URL.$datensatz[0].'.phtml';		
		} else {
			if($data["article_id"] == 1) {
				$_link = PHPWCMS_URL;
			} else {
				$_link = PHPWCMS_URL.'aid='.$data["article_id"].'.phtml';
			}
		}
		//Horner edit end
		echo '	<url>'.LF;
    		echo '		<loc>'.$_link.'</loc>'.LF;
		echo '		<lastmod>'.$data["article_tstamp"].'</lastmod>'.LF;
		echo '	</url>'.LF; 
		// yes we have a minimum of 1 article link
		$base = false;

	}
}

echo LF.'	<!-- try to add custom URLs from INI file... ';
$_addURL = parse_ini_file (PHPWCMS_ROOT.'/config/phpwcms/sitemap.custom.ini', true);
echo '-->'.LF;

if(is_array($_addURL) && count($_addURL)) {
	
	foreach($_addURL as $value) {
	
		$_link = empty($value['url']) ? '' : trim($value['url']);
		if(empty($_link)) {
			continue;
		}
		$_lastmod = empty($value['date']) ? '' : trim($value['date']);
		if(empty($value['date'])) {
			$_lastmod = date('Y-m-d');
		}
		echo '	<url>'.LF;
    	echo '		<loc>'.$_link.'</loc>'.LF;
		echo '		<lastmod>'.$_lastmod.'</lastmod>'.LF;
		echo '	</url>'.LF;  
	
	}
	
} else {
	echo '	<!-- ...no custom URL available for inclusion -->'.LF.LF;
}

if($base) {
	// just return the main URL
	echo '	<url>'.LF;
    echo '		<loc>'.PHPWCMS_URL.'</loc>'.LF;
	echo '		<lastmod>'.date('Y-m-d').'</lastmod>'.LF;
	echo '	</url>'.LF;  
}

echo '</urlset>';

?>
Last edited by eh100091 on Tue 30. Sep 2008, 20:53, edited 1 time in total.
Best regards from Upperaustria
Schoene Gruesse aus Oberoesterreich

http://horners.at

Peter
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

hi,
bei deinem script werden jetzt aber nur noch die aliase ausgegeben und keine Artikel mehr - und das doppelt und dreifach, oder ist das nur bei mir so?!

aber abgesehen davon, google listet ja nicht nur deine sitemapeinträge, sondern auch alle anderen seiten, die google irgendwie verfolgen kann und dann hast du deine links auch doppelt und dreifach drin (berichtigt mich wenn das falsch ist) - also hilft es meines erachtens nur, das crawlen für spezielle Seiten/Links zu unterbinden.

grüße
marcus
Olli_another_one
Posts: 48
Joined: Sun 25. Mar 2007, 01:03
Contact:

Post by Olli_another_one »

super! die erweiterung der sqlabfragen werde ich dann mal einbauen thx.
:D
marcus@localhost - ich denke mal solang die Inhalte hinter einer URL gleich sind und diese Inhalte nur ueber diese einzige URL von Google erreicht werden koennen ist es doch egal wieviel links zu dieser URL existieren - doppelter content ist das doch nicht oder wie meinst du das?
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

ich meine der sinn der sitemap ist mit dem script nicht mehr gegeben.

Die sitemap ist laut google dafür da, auch tief vergrabenen Content an google weiterzuleiten (meinetwegen weil der robot nach einer bestimmten seitentiefe abbricht - oder weil keine direkte verknüpfung der inhalte exsitiert, diese aber trotzdem gelistet werden sollen)

Google folgt den links aus der sitemap.php und findet trotz alledem die verschiedenen Links zu allen anderen seiten, egal ob mit aid, alias oder id.
Die sitemap erleichtert dem bot vielleicht die arbeit, weil er bevor er die ganze site nach links abgrast die liste erstmal abarbeitet, aber trotzdem folgt er noch den einzelnen links in den seiten.
unter umständen listet er euch trotz "aliasierter" sitemap.php die seiten mit den id nummer, ausser man sagt dem bot, "nicht diesen links (mit id oder aid) folgen".
ausserdem enthält die sitemap mit obrigen script nur ein paar links zu den kategorien, aber nicht _alle_ seiten - wie es sinn machen würde für die sitemap.

ich meine das ist kein wirklicher gewinn.
Wenn man google wirklich nur einen definierten Weg auf die Seiten geben will, dann nur in dem man dem bot sagt, was er darf und was nicht.
Ich habe das oben beschrieben und teste das gerade selbst. dabei schliesse ich alle aid seiten vorm bot aus und in der sitemap stehen nur die id angaben 12,45,0,0,0,1,0.
Natürlich wird er auch die aliase der seiten listen, aber das ist mir egal - ich hab bis jetzt noch keine probleme damit gehabt und die gewichtung von keywords im dateiname halte ich auch nicht wirklich für das totschlagargument - aber kunden die davon gehört haben, wollen das gern, warum nicht. wird sich in ein paar wochen zeigen... ;-)

viele grüße
marcus
Post Reply