it-swarm.com.de

Artikel erscheint auch außerhalb des angegebenen Pfades

Ich bin kürzlich auf ein merkwürdiges Verhalten meiner Joomla 3.6.5-Installation gestoßen. Mir ist aufgefallen, dass (bei aktiviertem SEF) alle Artikel, denen die ID vorangestellt ist, angezeigt werden, wenn sie direkt über die URL aufgerufen werden, und nicht nur, wenn Sie dem im Menüelement angegebenen Pfad folgen.

Wenn zum Beispiel gemäß dem Menüpunkt der richtige Pfad wäre:

domain.com/menu-item1/submenu-item/219-article-title

der Artikel erscheint unter jedem Menüpunkt und auch ohne. So

domain.com/219-article-title

oder

domain.com/menu-item2/219-article-title

gib den Hauptteil des Artikels zurück. In diesen Fällen bleibt jedoch der über den Menüpunkt festgelegte Titel erhalten, lediglich der Text des Artikels wird gerendert. Interessanterweise nur der Teil nach dem 'read more ...'

Wenn ich SEF ausschalte, ist das Verhalten dasselbe, wenn ich die ID des Artikels durch einen Titel in der URL ersetze.

Ich finde dieses Verhalten eher eigenartig. Es bereitet mir einige Probleme, da der Google-Crawler diese Seiten indiziert. Während ich eine Multi-Site-Installation durchführe, erscheinen einige Artikel einer Site in der Weste der anderen (und können über die Google-Suche aufgerufen werden), was ziemlich ärgerlich ist.

Gibt es eine Möglichkeit, dies zu verhindern und die Artikel nur gemäß der Einstellung im Menüpunkt anzuzeigen?

3
Michael

Dies ist ein Problem mit dem Joomla Content Router. Insbesondere im folgenden Code:

if (!$advanced)
{
    $cat_id = (int) $segments[0];

    $article_id = (int) $segments[$count - 1];

    if ($article_id > 0)
    {
        $vars['view'] = 'article';
        $vars['catid'] = $cat_id;
        $vars['id'] = $article_id;
    }
    else
    {
        $vars['view'] = 'category';
        $vars['id'] = $cat_id;
    }

    return $vars;
}

Sie können sehen, wie die $article_id ist eine Ganzzahldarstellung des letzten Teils des $segments Array. Dies bedeutet, dass Sie Folgendes haben können: [youjoomladomain] .com/blablabla/123-your-article.html, und der Link wird weiterhin funktionieren, obwohl blablabla nicht einmal irgendwo existiert (nicht einmal als Kategorie oder ein Menüpunkt). Sogar [youjoomladomain] .com/blablabla/123-blablabla.html funktioniert, da 123 eine vorhandene Artikel-ID ist (alles andere wird ignoriert). Dies ist aus SEO-Sicht ein großes Problem, da ein Spammer über mehrere URLs (wobei der mittlere Teil eine obszöne Zeichenfolge sein kann) auf denselben Artikel auf Ihrer Website verlinken kann.

Die saubere Lösung für dieses Problem ist die Verwendung von sef_advanced_link wie beschrieben hier . Das sef_advanced_link Option ist in Joomla nicht gut beworben (es ist nicht einmal eine Option aus dem Backend - zumindest das letzte Mal, als ich es überprüft habe), trotz der enormen Vorteile (ich habe wirklich keine Ahnung warum). Wenn Sie diese Option verwenden, wird die ID in der Zeichenfolge entfernt, sodass Joomla gezwungen ist, die gesamte URL zu überprüfen, um festzustellen, auf welchen Artikel Sie sich beziehen. Einmal aktiviert, gibt jedes "blablabla" in der Mitte der URL eine 404 zurück.

2
itoctopus