Page 1 of 2

Canonical Einstellungen

Posted: Fri Oct 25, 2013 12:53 pm
by mthies
Moin in die Runde,

per Zufall ist mir in den Google Webmastertools aufgefallen, daß ich diverse Seiten im Index habe, die nicht gefunden werden.

die sehen alle so aus: ../archives/0/08/C6/

alle diese nichvorhandenen Seiten werden zwar nicht direkt verlinkt aber in den vorhandenen Archiv Seiten steht der Link als Canonical Tag.

In diesem Beispiel die beiden Seiten
http://www.tischtennis-blog.de/archives/2009/08/C6.html
http://www.tischtennis-blog.de/archives/2007/08/C6.html

anscheinend wird die Jahreszahl immer als 0 geschrieben.

Der Canonical Tag wird über das Plugin "HTML Link Metatags" eingebunden.

Bei den einzelnen Seiten funktioniert es problemlos. Wie ist das bei den Archiven zu lösen?

Die Archve nutze ich überhaupt nicht. Oder sollte man sie einfach abschalten?

Grüße
Markus

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 1:04 pm
by Timbalu

Code: Select all

<link rel="start" href="http://www.tischtennis-blog.de/" title="Tischtennis Blog" />
<link rel="up" href="http://www.tischtennis-blog.de/Archiv" title="Archive" />
<link rel="canonical" href="http://www.tischtennis-blog.de/archives/0/08/C0/" />
<link rel="prev" href="http://www.tischtennis-blog.de/archives/2007/07.html" title="Einträge für Juli 2007" />
<link rel="next" href="http://www.tischtennis-blog.de/archives/2007/09.html" title="Einträge für September 2007" />
hmmm, sieht mir nach einem Fehler im Plugin "HTML Link Metatags" aus. Ich werde da nachher mal rübergucken... Wie heißt das Plugin genau?

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 2:40 pm
by Timbalu
Das wird schwierig ohne es selbst zu debuggen, fürchte ich.
Erst einmal müsste man rausfinden, warum die Archiv summary pages nicht funktionieren.
zb http: //www.tischtennis-blog.de/archives/2012/08/summary.html
aber http: //www.tischtennis-blog.de/archives/2012/08.html sehr wohl.
Wie sieht deine htaccess aus? Ebenso müsste man ausprobieren, ob
https://github.com/s9y/additional_theme ... ummary.tpl
nicht vielleicht eher wie in default geschrieben werden müsste. Siehe "sentries" anstelle von "entries" in beiden foreach loops.
https://github.com/s9y/Serendipity/blob ... ummary.tpl

Denn wir mussten (vor Jahren) für Smarty 3 darin eine Änderung vornehmen, die Mimbo anscheinend nicht mitgemacht hat:
https://github.com/s9y/Serendipity/comm ... f746d1db26

Vielleicht löst sich ja das canonical Problem damit schon auf.... ansonsten müsste man jedes Vorkommen des rel="canonical" in https://github.com/s9y/additional_plugi ... oolbar.php mal mit einer einzigartigen class="zeile X" bestücken, um herauszufinden, welches Zeile und wann diese 0 setzt.

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 5:48 pm
by mthies
Hallo Timbalu,

danke für Deine Tipps.

Hier erst einmal die .htaccess:
# BEGIN s9y
ErrorDocument 404 /index.php
DirectoryIndex /index.php

RewriteEngine On

RewriteBase /
RewriteRule ^((archives/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+\.html)/?) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/authors/([0-9]+)-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(categories/([0-9;]+)-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^archives([/A-Za-z0-9]+)\.html index.php?url=/archives/$1.html [NC,L,QSA]
RewriteRule ^([0-9]+)[_\-][0-9a-z_\-]*\.html index.php?url=$1-article.html [L,NC,QSA]
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA]
RewriteRule ^unsubscribe/(.*)/([0-9]+) index.php?url=/unsubscribe/$1/$2 [L,QSA]
RewriteRule ^approve/(.*)/(.*)/([0-9]+) index.php?url=approve/$1/$2/$3 [L,QSA]
RewriteRule ^delete/(.*)/(.*)/([0-9]+) index.php?url=delete/$1/$2/$3 [L,QSA]
RewriteRule ^(admin|entries)(/.+)? index.php?url=admin/ [L,QSA]
RewriteRule ^archive/? index.php?url=/archive [L,QSA]
RewriteRule ^(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml) rss.php?file=$1&ext=$2
RewriteRule ^(plugin|plugin)/(.*) index.php?url=$1/$2 [L,QSA]
RewriteRule ^search/(.*) index.php?url=/search/$1 [L,QSA]
RewriteRule ^comments/(.*) index.php?url=/comments/$1 [L,QSA]
RewriteRule ^(serendipity\.css|serendipity_admin\.css) index.php?url=/$1 [L,QSA]
RewriteRule ^index\.(html?|php.+) index.php?url=index.html [L,QSA]
RewriteRule ^htmlarea/(.*) htmlarea/$1 [L,QSA]
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)?tischtennis-blog\.eu [OR]
RewriteCond %{HTTP_HOST} ^s209712444.online\.de [OR]
RewriteCond %{HTTP_HOST} ^tischtennis-blog\.de
RewriteRule ^(.*) http://www.tischtennis-blog.de/$1 [R=301,L]
RewriteRule ^tischtennis$ http://www.tischtennis-blog.de/ [R=301,L]

RewriteRule ^archives/(.*) /$1 [L,R=301]


<Files *.tpl.php>
deny from all
</Files>

<Files *.tpl>
deny from all
</Files>

<Files *.sql>
deny from all
</Files>

<Files *.inc.php>
deny from all
</Files>

<Files *.db>
deny from all
</Files>
So weit ich mich erinnere, ist das der Standard.

Das Mimbo Template habe ich mal geändert. Die summary.html funktioniert wieder. So weit ich das beurteilen kann.
Wie heißt denn das Plugin?

Grüße
Markus

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 5:58 pm
by Timbalu
serendipity_event_linktoolbar

Aber irgendetwas stimmt da immer noch nicht mit der summary, denn bei mir zeigen sie außer der Überschrift nichts an.

Vielleicht solltest du mal temporär die drei RewriteCond rules in der htaccess auskommentieren, vielleicht blockieren die durch einen Fehler irgendetwas... (diese 3 sind nicht Standard! siehe https://github.com/s9y/Serendipity/blob ... ewrite.tpl)

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 6:22 pm
by mthies
habe ich so gemacht:
# RewriteCond %{HTTP_HOST} ^(www\.)?tischtennis-blog\.eu [OR]
# RewriteCond %{HTTP_HOST} ^s209712444.online\.de [OR]
# RewriteCond %{HTTP_HOST} ^tischtennis-blog\.de
# RewriteRule ^(.*) http://www.tischtennis-blog.de/$1 [R=301,L]
in der serendipity_event_linktoolbar.php

steht bei mir folgende Zeile:
echo '<link rel="canonical" href="' . $this->getEntry($serendipity['GET']['id']) . '" />' . "\n";

} elseif ($serendipity['GET']['action'] == 'read' && is_array($serendipity['range'])) {

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 6:39 pm
by Timbalu
Jupp, aber von den <link rel="canonical" href= gibt es mehrere Vorkommen, deren Url unterschiedlich gebildet wird und so aus der Ferne kann ich nicht sagen, welche nun für deine "0" links zuständig ist. Deshalb die Idee, diese jeweils mit einer class="Zeile Soundsoviel" zu ergänzen, damit man das ein wenig besser eingrenzen kann, bevor man weiter debuggt.

Die RewriteRule ^(.*) http://www.tischtennis-blog.de/$1 [R=301,L] musst du aber wieder erlauben. Es ging mir erst einmal nur um die # RewriteCond ... Einträge.

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 6:46 pm
by mthies
Timbalu wrote: Die RewriteRule ^(.*) http://www.tischtennis-blog.de/$1 [R=301,L] musst du aber wieder erlauben. Es ging mir erst einmal nur um die # RewriteCond ... Einträge.
das dachte ich auch

das sieht dann aber so aus:
Fehler: Umleitungsfehler

Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 6:50 pm
by Timbalu
Ups stimmt!
Ebenso wahrscheinlich die folgende RewriteRule ^archives/(.*) /$1 [L,R=301]
Wo auch immer die herkommt.

Zeigt du mir bitte nochmal deine geänderte mimbo summary Datei?

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 6:53 pm
by mthies
{serendipity_hookPlugin hook="entries_header"}
<h2 class="pagetitle">{$CONST.TOPICS_OF} {$dateRange.0|@formatTime:"%B, %Y"}</h2>

<div class="post">
{foreach from=$entries item="sentries"}
+ {foreach from=$sentries.entries item="entry"}
<h3 class="summary_title"><a href="{$entry.link}">{$entry.title}</a></h3>

<small>{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> &bull; {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}{if $entry.categories} &bull; {$CONST.CATEGORY}: {foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}{/if}</small>

<hr class="archiverule" />
{/foreach}
{/foreach}
</div>

<div class="serendipity_pageFooter" style="text-align: center">
{serendipity_hookPlugin hook="entries_footer"}
</div>

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 7:05 pm
by Timbalu
Was macht denn das plus das vor dem 2. foreach?
Sonst müsste dass ja eigentlich so funktioieren. Macht es das bei dir?
Beispiel http://www.tischtennis-blog.de/archives ... mmary.html

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 7:19 pm
by mthies
weiß auch nicht, das dahingekommen ist.

aber irgendetwas stimmt noch nicht

http://www.tischtennis-blog.de/archives ... mmary.html
dürfte nicht leer sein

und
http://www.tischtennis-blog.de/archives ... mmary.html

ist nicht leer, wird aber umgeschrieben.

Ich muß jetzt erst einmal los. Tischtennis Spiel ;-)

danke erst mal

Re: Canonical Einstellungen

Posted: Fri Oct 25, 2013 7:31 pm
by Timbalu
Was meinst du mit umgeschrieben?
Beide sind doch eigentlich identisch - jedenfalls in dem Part, der die entries eben nicht anzeigt.

Setze mal ein <pre>{$entries|print_r}</pre> in die leere Zeile vor dem <div class="post">, um zu sehen, ob $entries überhaupt angeliefert wird.
Hast du in der htaccess jetzt alle weiteren rules bis zu den <Files ... - nach dem RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA] auch auskommentiert?
Wie ist die Reihenfolge in deiner event Pluginliste?

Re: Canonical Einstellungen

Posted: Sat Oct 26, 2013 1:07 pm
by Timbalu
Nachdem ich mir Mimbo und linktoolbar mal installiert habe, fasse ich mal zusammen:
Normale .htaccess:

Code: Select all

# BEGIN s9y
ErrorDocument 404 /index.php
DirectoryIndex /index.php
php_value session.use_trans_sid 0
php_value register_globals off
Options -MultiViews

RewriteEngine On
RewriteBase /
RewriteRule ^serendipity_admin.php serendipity_admin.php [NC,L,QSA]
RewriteRule ^((archives/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+\.html)/?) index.php?/$1 [NC,L,QSA]
RewriteRule ^(authors/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/categories/([0-9;]+)\-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(feeds/authors/([0-9]+)\-[0-9a-z\.\_!;,\+\-\%]+\.rss) index.php?/$1 [NC,L,QSA]
RewriteRule ^(categories/([0-9;]+)\-[0-9a-z\.\_!;,\+\-\%]+) index.php?/$1 [NC,L,QSA]
RewriteRule ^archives([/A-Za-z0-9]+)\.html index.php?url=/archives/$1.html [NC,L,QSA]
RewriteRule ^([0-9]+)[_\-][0-9a-z_\-]*\.html index.php?url=$1-article.html [L,NC,QSA]
RewriteRule ^feeds/(.*) index.php?url=/feeds/$1 [L,QSA]
RewriteRule ^unsubscribe/(.*)/([0-9]+) index.php?url=/unsubscribe/$1/$2 [L,QSA]
RewriteRule ^approve/(.*)/(.*)/([0-9]+) index.php?url=approve/$1/$2/$3 [L,QSA]
RewriteRule ^delete/(.*)/(.*)/([0-9]+) index.php?url=delete/$1/$2/$3 [L,QSA]
RewriteRule ^(admin|entries)(/.+)?$ index.php?url=admin/ [L,QSA]
RewriteRule ^archive/? index.php?url=/archive [L,QSA]
RewriteRule ^(index|atom[0-9]*|rss|b2rss|b2rdf).(rss|rdf|rss2|xml) rss.php?file=$1&ext=$2
RewriteRule ^(plugin|plugin)/(.*) index.php?url=$1/$2 [L,QSA]
RewriteRule ^search/(.*) index.php?url=/search/$1 [L,QSA]
RewriteRule ^comments/(.*) index.php?url=/comments/$1 [L,QSA]
RewriteRule ^(serendipity\.css|serendipity_admin\.css)$ index.php?url=/$1 [L,QSA]
RewriteRule ^index\.(html?|php.+) index.php?url=index.html [L,QSA]
RewriteRule ^htmlarea/(.*) htmlarea/$1 [L,QSA]
#RewriteCond %{REQUEST_URI} !-U
RewriteRule (.*\.html?) index.php?url=/$1 [L,QSA]

<Files *.tpl.php>
    deny from all
</Files>

<Files *.tpl>
    deny from all
</Files>

<Files *.sql>
    deny from all
</Files>

<Files *.inc.php>
    deny from all
</Files>

<Files *.db>
    deny from all
</Files>

# END s9y
Normale - aber fehlerbereinigte (s.o.) - Mimbo/entries_summary.tpl:

Code: Select all

{serendipity_hookPlugin hook="entries_header"}
<h2 class="pagetitle">{$CONST.TOPICS_OF} {$dateRange.0|@formatTime:"%B, %Y"}</h2>

<div class="post">
{foreach from=$entries item="sentries"}
    {foreach from=$sentries.entries item="entry"}
    <h3 class="summary_title"><a href="{$entry.link}">{$entry.title}</a></h3>

    <small>{$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> &bull; {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}{if $entry.categories} &bull; {$CONST.CATEGORY}: {foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}{/if}</small>

    <hr class="archiverule" />
    {/foreach}
{/foreach}
</div>

<div class="serendipity_pageFooter" style="text-align: center">
{serendipity_hookPlugin hook="entries_footer"}
</div>
Mit diesen beiden funktioniert alles wie es soll, soweit ich das sehe. Nun zu dem "canonical".

Code: Select all

<link rel="canonical" href="http://example.com/archives/0/1/summary/" /> 
heißt hier

Code: Select all

/author-ID/entry-ID/summary(optional)/
Alle diese appendixes, ausser denen die hinter dem letzten slash mit ID-ENTRYTITLE anfangen und mit .html enden, sind "Anzeigen fakes" und können fast beliebig geändert werden. Sie zeigen also nur eine Struktur, wie sie intern verwendet wird, die aber auch ohne diese äußere Darstellung in der Adressbar funtionieren würde. Trotzdem ist die Struktur ja nicht beliebig, denn kommen solche URI Argumente von außerhalb, erschließt sich Serendpity aus ihnen die nötigen GET Anweisungen, die es dann intern verwendet um Seiten und Entries richtig anzuzeigen.

Wenn dies also zb mit einer /archives/0/ beginnt, ist dies immer die Author ID (in diesem Fall der Admin) und nicht das Jahr. Monate zB kommen immer nur nach dem Muster /archives/2013/03/ oder /archives/2013/03.html vor. Kanonische Links dienen ja nur dazu, Seiten, die man auf verschiedenen Wegen erreichen kann, mit der am Besten erscheinenden URL zu beantworten, bzw öffentlich verfügbar zu machen. (*)

Zusammenfassend würde ich also sagen:

Code: Select all

../archives/0/08/C6/
ist

Code: Select all

/author-ADMIN/entry-ID=08/CategoryNum=C6/
und damit auch völlig in Ordnung.

Das dies nun bei dir nicht richtig angezeigt wird, ist wahrscheinlich eine Kombination aus fehlerhafter htaccess und summary Datei (**). Deshalb habe ich sie hier in einer laufenden Variante hinzugefügt.

(*) https://support.google.com/webmasters/a ... 9394?hl=de

(**) Ich würde das linktoolbar Plugin eher gegen Ende der Plugin Liste positionieren. (Besonders wahrscheinlich auch hinter das HTML Meta-Tags Plugin.)

Re: Canonical Einstellungen

Posted: Sat Oct 26, 2013 2:08 pm
by mthies
die htaccess funktioniert auf meinem Server nicht. ich mußte die beiden Zeilen auskommentieren:
php_value session.use_trans_sid 0
php_value register_globals off
Ich habe aber noch nicht verstanden, was ich mit dem canonical Code machen soll.