404.php und Wer ist online

    • Offizieller Beitrag

    Prüfe mal Deine Seite, ob irgendwas fehlt. Ich habe oft festgestellt, dass irgendein Bild im Template definiert ist, was nicht da ist, dann kommt genau dieses Problem zu stande. Es gibt von Dynatrace ein kostenloses Tool, http://ajax.dynatrace.com/pages/ , damit kann man das sehr gut raus finden.

    <p>Wir geben nur Anregungen und Hilfestellung auf Basis unserer Erfahrung, keine Rechtshilfe!<br>\m/('_')\m/</p>

  • Jetzt ist klar woran das liegt, Google hat in den Suchergebnissen sie die Seite mit den alten Links. So das die Suchenden zwar auf die Seite kommen aber die Detaillinks stimmen nicht mehr und so landen die potentielen Kunden auf die 404.php.
    Das ist blöd, gibt es da ein Trick um das zu umgehen ??

    gruß
    Zacharias

  • Hast Du das URL Modul aktiviert? Ja?

    Dann scheint bei Dir etwas nicht zu stimmen.

    Öffne die /inc/bluegate_seo.inc.php und suche:

    PHP
    if ($fileName=='product_info.php' && $_GET['info']<>'' && $_GET['products_id']=='' && $_GET['action']=='') {            $parameters='info=p'.$_GET['info'];            $redirectLink = $this->getProductLink($parameters,$connection,$_SESSION['languages_id']);            header("HTTP/1.1 301 Moved Permanently");            header("Location: ".$redirectLink);            die('This page has moved to: <a href="'.$redirectLink.'">'.$redirectLink.'</a>');        }

    Ändere das:

    PHP
    $parameters='info=p'.$_GET['info'];

    in das:

    PHP
    $parameters='info='.$_GET['info'];

    Für den Fall das Du alte URL's hattest, sollten die nun umgeleitet werden.

  • Nun steht das dort drin:

    // *******************************************************************
    // * PRODUCT 301 REDIRECT ********************************************
    // *******************************************************************

    // Create 301 redirect for PRODUCT LINKS without xtc:Suma friendly URLS
    // e.g.: http://www.shopname.com/product_info.p…_Produkt-1.html
    if ($fileName=='product_info.php' && $_GET['info']<>'' && $_GET['products_id']=='' && $_GET['action']=='') {
    $parameters='info='.$_GET['info'];
    $redirectLink = $this->getProductLink($parameters,$connection,$_SESSION['languages_id']);
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$redirectLink);
    die('This page has moved to: <a href="'.$redirectLink.'">'.$redirectLink.'</a>');
    }

    // Create 301 redirect for PRODUCT LINKS with xtc:Suma friendly URLS
    // e.g.: http://www.shopname.com/product_info.php/products_id/124
    if ($fileName=='product_info.php' && $_GET['products_id']<>'' && $_GET['info']==''&& $_GET['action']=='') {
    $parameters='products_id='.$_GET['products_id'];
    $redirectLink = $this->getProductLink($parameters,$connection,$_SESSION['languages_id']);

    header("HTTP/1.1 301 Moved Permanently");
    header("Location: ".$redirectLink);
    die('This page has moved to: <a href="'.$redirectLink.'">'.$redirectLink.'</a>');


    der Link in Google lautet:

    http://www.manduca-tragehilfe.de/shop/index.php…keltaschen.html

    diese landet immer noch auf die 404.php

    gruß
    Zacharias

  • und das ist die htaccess:

    # .htaccess for commerce:SEO URL
    #
    # angepasst von Sebastian Schramm und Daniel Siekiera
    # Blog Integration - Daniel Siekiera

    RewriteEngine On

    # Kommentieren Sie diese Zeile aus, wenn Sie einen Fehler 500 (Internal Server Error) erhalten
    Options +FollowSymlinks

    Options +SymLinksIfOwnerMatch
    RewriteCond %{HTTP_HOST} !^www\..* [NC]
    RewriteCond %{HTTP_HOST} !^.*\..*\..* [NC]
    RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

    # Editieren Sie die untenstehende Zeile wenn ihr Shop in einem Unterordner läuft.
    # Aber auch wenn Sie einen Fehler 500 (Internal Server Error) bekommen.
    # Beispiel: Ist ihr Shop im Verzeichnis https://support.commerce-seo.de/www.domain.de/shop ändern Sie die Zeile wie folgt: "RewriteBase /shop"
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d

    RewriteRule ^(.+) - [PT,L]

    RewriteRule ^(.*)(.+)404.php$ 404.php [qsappend,L]

    RewriteRule ^(.*)(.+)\.html$ commerce_seo_url.php?linkurl=$1$2 [qsappend,L]

    RewriteCond %{REQUEST_FILENAME} !\.html$ [OR]
    RewriteRule ^(.*)--Seite-(.*[1-9])?(.*)$ commerce_seo_url.php?linkurl=$1&page=$2 [qsappend,L]

    RewriteCond %{REQUEST_FILENAME} !\.html$ [OR]
    RewriteRule ^(.*)--Page-(.*[1-9])?(.*)$ commerce_seo_url.php?linkurl=$1&page=$2 [qsappend,L]

    RewriteCond %{REQUEST_FILENAME} !\.html$ [OR]
    RewriteRule ^(.*)$ commerce_seo_url.php?linkurl=$1 [qsappend,L]

    ErrorDocument 404 /404.php

  • Oh-ha. Meine Änderung bezog sich lediglich auf die alten Produktlinks, nicht auf Kategorien.

    Würdest mir bitte mal via PM einen FTP-Zugang zukommen lassen? Dann schaue ich mir das fix an.

  • So, musste direkt ne neue Funktion bauen. ;)

    Bei Dir war folgender Sachverhalt. Du hattest den Shop vorher in einem Unterordner. Die alte URL war eine mit ../shop/.. das kann das System nicht wissen. Also habe ich in Deiner .htaccess eine Umleitung eingebaut:

    Apache Configuration
    RewriteCond %{REQUEST_FILENAME} !shop/(.*)\.html$ [OR]RewriteRule ^shop/(.*)(.+)$      http://www.manduca-tragehilfe.de/$1$2 [R=301,L]

    Erläuterung: Kommt in der aufgerufenen URL die Phrase "shop/" vor, leite um zur neuen Domain ohne "shop/". Aus

    Code
    http://www.manduca-tragehilfe.de/shop/index.php?cat=c48_OiOi-Wickeltaschen.html

    wird also

    Code
    http://www.manduca-tragehilfe.de/index.php?cat=c48_OiOi-Wickeltaschen.html

    Das ging dann aber immer noch nicht. Es fehlte eine ganze Funktion. Das $_GET "cat=c" konnte nicht verarbeitet werden.

    Also eine Funktion her, die aus der alten URL die ID extrahiert:

    PHP
    function getCategoryLinkOld($parameters,$connection='NONSSL',$language) {        $new_link = explode('_',$parameters);        $categoryId = str_replace('cat=c','',$new_link[0]);        if ($connection == 'SSL' && ENABLE_SSL) {            $link = HTTPS_SERVER.DIR_WS_CATALOG;        } else {            $link = HTTP_SERVER.DIR_WS_CATALOG ;        }        // Get SUMA friendly category Link from Database        $category_link_query   = "SELECT url_text FROM bluegate_seo_url WHERE categories_id = '".$categoryId."' AND language_id='".$language."'";        $category_link_query   = xtc_db_query($category_link_query);        $category_link          = xtc_db_fetch_array($category_link_query,false);        return $link . $category_link['url_text'];    }

    Aus:

    Code
    c48_OiOi-Wickeltaschen.html

    wird nun

    Code
    48

    Èt voila...