kullikulli MemberComments: 2074 Received thanks: 332 Member since: August 2013

Angeregt durch diese Diskussion:

https://forum.shopware.com/discussion/57662/sw-5-4-6-sw-5-5-3-explodierende-anzahl-an-urls#latest

wollte ich mal die aktuelle sitemap in 5.5.3 mit dem Aufruf https://meinedomain.de/sitemap.xml anschauen;

bekomme aber nur eine Einzeilige Ausgabe in diesem Format :

https://meinedomain.de/web/sitemap/shop-1/sitemap-1.xml.gz
        2018-11-23

hab ich da was versäumt, hat sich der Aufruf geändert ? Oder wo liegt der Fehler ?

1 Answer

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Du wirst an sitemap_index.xml weitergeleitet und dort wird ein xml.gz zur Verfügung gestellt. Das ist die neue Sitemap-Generierung in 5.5.

    Wird hier auch von Google so beschrieben: https://support.google.com/webmasters/answer/75712?hl=de

    Das ist eine Archiv-Datei (kannst du runterladen und entpacken) und dort ist die Sitemap drin. Es hat sich eigentlich nichts geändert.

    Die Erzeugung kann jetzt über das Backend oder per Cron gesteuert werden. Vorher wurde die immer Live generiert, was zu lasten der Seitenperformance ging. Jetzt wird sie auch gecached.

    Quote
    Accepted Answer
    Thanked by 1kulli
  • Accepted Answer
«1

Answers

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Du wirst an sitemap_index.xml weitergeleitet und dort wird ein xml.gz zur Verfügung gestellt. Das ist die neue Sitemap-Generierung in 5.5.

    Wird hier auch von Google so beschrieben: https://support.google.com/webmasters/answer/75712?hl=de

    Das ist eine Archiv-Datei (kannst du runterladen und entpacken) und dort ist die Sitemap drin. Es hat sich eigentlich nichts geändert.

    Die Erzeugung kann jetzt über das Backend oder per Cron gesteuert werden. Vorher wurde die immer Live generiert, was zu lasten der Seitenperformance ging. Jetzt wird sie auch gecached.

    Quote
    Accepted Answer
    Thanked by 1kulli
  • DerNilsDerNils MemberComments: 69 Received thanks: 9 Member since: August 2015

    Moin.

    Ich häng mich hier mal ran. Nach dem Update auf 5.5.3 habe ich ein Problem mit der Sitemap.

    - Aufruf /sitemap.xml wird weitergeleitet auf /sitemap_index.xml

    - Aufruf /sitemap_index.xml wird mit einem "404 Not Found" beantwortet.

    - /web/sitemap/shop-1/sitemap-1.xml.gz ist aufrufbar und sieht gut aus.

    Es gibt also nur ein Problem mit der /sitemap_index.xml Ich habe keinerlei Ansatzpunkt. Die Logs geben gar nichts aus.

    Was mich am meisten verwirrt: Ich hab nicht mal den Aufruf der sitemap_index.xml in der access.log des Servers. Dort ist nur die sitemap.xml mit HTTP 302. 

    Hat irgendjemand eine Idee?

  • ShyimShyim MemberComments: 947 Received thanks: 377 Member since: May 2015

    Was hast du für einen Webserver?

  • DerNilsDerNils MemberComments: 69 Received thanks: 9 Member since: August 2015

    Nginx. Sorry, vergas ich zu erwähnen.

  • DerNilsDerNils MemberComments: 69 Received thanks: 9 Member since: August 2015

    Danke @Shyim‍ für den (wohl ungewollten) Hinweis. In der nginx-Konfiguration fehlte dieser Eintrag:

    location = /sitemap_index.xml {
        log_not_found off;
        access_log off;
        try_files $uri @shopware;
    }

     

  • ShyimShyim MemberComments: 947 Received thanks: 377 edited November 2018 Member since: May 2015

    Sicher? Ich entwickle mit Nginx und bei mir brauch ich es nicht lol

    Und erstell bitte einen kleinen Pull Request hier, damit jeder davon profitiert https://github.com/bcremer/shopware-with-nginx

  • kullikulli MemberComments: 2074 Received thanks: 332 edited November 2018 Member since: August 2013

    ich denke es kommt drauf an ob es pure nginx ist oder proxy mit apache.

    Ich habe nginx proxymodus in Verbindung mit plesk und brauche die Anweisung auch nicht.

    Allerdings muss man auch bei google die "alten" sitemaps rauslöschen sonst kapiert der Gockel das nicht gleich mit der neuen sitemap; dann dauert es auch gefühlt ne Ewigkeit bis sich die Neue durchsetzt, wie immer.

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 edited January 2019 Member since: January 2012

    Was gehört dann in die robots.txt?
    Bleibt es bei
    Sitemap: domain.../sitemap.xml
    oder soll da jetzt
    Sitemap: domain.../web/sitemap/shop-1/sitemap-1.xml.gz
    stehen?

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Und wie kann man z.B. Hersteller aus der Sitmap ausschliessen?
    Bisher konnte man das über {block name="frontend_sitemap_xml_suppliers"}{/block} im eigenen Theme.

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Ist aktuell in Bearbeitung: https://issues.shopware.com/issues/SW-22753

    Über das Template geht das durch die neue Methode leider nicht mehr. Es wird in Zukunft direkt über das Backend machbar sein.

     

    Für den Übergang könntest du folgende Zeile ändern: https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Bundle/SitemapBundle/Provider/ManufacturerUrlProvider.php#L92

    Einfach aus "return $urls;" ein "return;" machen und die Sitemap neu generieren.

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Danke für die Lösung, aber das kann ja eigentlich nicht sein.
    Sorry, aber wie kann man denn so eine Verschlimmbesserung veröffentlichen.

  • nodlingernodlinger MemberComments: 16 Received thanks: 1 Member since: January 2015

    Es ist echt "unvorteilhaft", dass die eigenen Anpassungen über die Templates nun keinen Bestand mehr haben.

    Wir haben bei den Artikel ein Freitextfeld "noindex" angelegt, um gezielt Artikel aus der Indexitierung und der Sitemap auszuschließen. Heute haben wir festgestellt, dass unsere Anpassung keinerlei Wirkung mehr zeigt und alle Artikel wieder in der Sitemap gelistet werden. Das ist mehr als ärgerlich.

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 edited January 2019 Member since: January 2012

    By the way: die Shopseiten sind doppelt in der Sitemap vorhanden.
    Kann es im SW-Demoshop leider nicht prüfen, weil dort gar keine Shopseiten erscheinen, wie auch immer ihr das gemacht habt.

    Was gehört denn nun in die robots.txt? (siehe Frage oben)

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Die Shopseiten landen nicht in der Sitemap, wenn sie nicht dem Shop zugewiesen sind (Shopeinstellungen > Shops). Das ist bei der Demoinstallation so.

    Doppelt hatte ich die nun nicht in der Sitemap.
    Die robots.txt ist ja erstmal nur ein indikator dafür, wo die Sitemap liegt. Da der Bot die Sitemap sowohl über /sitemap.xml und auch sitemap_index erreichen kann, ist das denke ich egal. Bei sitemap_index spart man sich den Redirect. 

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Dazu muss ich dann noch das da machen, weil die Shopseiten weg sind:
    https://forum.shopware.com/discussion/comment/234861/#Comment_234861

    Manchmal kann man echt nur mit dem Kopf schütteln.

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 edited March 2019 Member since: January 2012

    Ist aktuell in Bearbeitung: https://issues.shopware.com/issues/SW-22753

    Über das Template geht das durch die neue Methode leider nicht mehr. Es wird in Zukunft direkt über das Backend machbar sein.

    Ich hab in unserem Testshop das Upate auf 5.5.7 gemacht. Das genannte Ticket ist umgesetzt.
    Wie kann ich denn nun URLs aus der Sitemap ausschliessen?
    Bisher konnte man das über {block name="frontend_sitemap_xml_suppliers"}{/block} im eigenen Theme.

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Ich hab das Ticket insofern falsch verstanden, dass es nicht über das Backend geht, aber die config.php.

    Hier ein Beispiel:

    'sitemap' => [
            'excluded_urls' => [
                [
                    'resource' => 'product', // Möglich: Product, campaign, manufacturer, blog, category, static
                    'identifier' => '', // Die ID der o.g. Entität. Wenn leer (oder 0) wird die o.g. Resource komplett ausgeschlossen
                    'shopId' => 0 // Die ID des Shops, für den dieser Ausschluss gilt. Bei 0 zählen alle Shops
                ],[
                    'resource' => 'static', // Beispiel: Schließt die statische Seite mit ID 1 (identifier) von Shop 2 aus
                    'identifier' => '1', // In Shop mit ID 1 wird die URL trotzdem ausgespielt
                    'shopId' => 2
                ],[
                    'resource' => 'static', // Beispiel: Schließt die statische Seite mit den ID's 3 und 4 (identifier) von allen Shops aus
                    'identifier' => '1',
                    'shopId' => 0
                ],
            ]
        ],

     

    Thanked by 1n8lauscher
  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Danke, aber das funktioniert nicht.
    Vielleicht hab ich ja auch was falsch gemacht?
    So sieht die config.php aus.

    <?php return array (
      'db' => 
      array (
        'username' => 'xxxxxxx',
        'password' => 'xxxxxxx',
        'dbname' => 'xxxxxxx',
        'host' => 'xxxxxxx',
        'port' => 'xxxxxxx',
      ),
      
     	'cdn' => [
        'strategy' => 'plain',
        'adapters' => [
            'local' => [
                'type' => 'local',
                'mediaUrl' => '',
                'path' => realpath(__DIR__ . '/'),
                'permissions' => [
                    'file' => [
                        'public' => 0666 & ~umask(),
                        'private' => 0600 & ~umask(),
                    ],
                    'dir' => [
                        'public' => 0777 & ~umask(),
                        'private' => 0700 & ~umask(),
                    ]
                ],
            ],
            'old_local' => [
                'type' => 'local',
                'mediaUrl' => '',
                'path' => realpath(__DIR__ . '/'),
                'permissions' => [
                    'file' => [
                        'public' => 0666 & ~umask(),
                        'private' => 0600 & ~umask(),
                    ],
                    'dir' => [
                        'public' => 0777 & ~umask(),
                        'private' => 0700 & ~umask(),
                    ]
                ],
            ]
        ]
    ],
    
     'sitemap' => [
            'excluded_urls' => [
                [
                    'resource' => 'manufacturer', // Möglich: Product, campaign, manufacturer, blog, category, static
                    'identifier' => '0', // Die ID der o.g. Entität. Wenn leer (oder 0) wird die o.g. Resource komplett ausgeschlossen
                    'shopId' => 0 // Die ID des Shops, für den dieser Ausschluss gilt. Bei 0 zählen alle Shops
                ]
            ]
        ]
    
    );

     

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Mach mal statt

     'resource' => 'manufacturer'

    Einfach

    'resource' => 'Shopware\Models\Article\Supplier',

    Damit hat es bei mir geklappt. Ich schau mir das nochmal an, warum das so ist.

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Klingt logisch ;-)
    Damit funktioniert es - danke.

    Wird es denn in naher Zukunft eine Möglichkeit im Backend geben, das einstellen zu können?

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013

    Wird es denn in naher Zukunft eine Möglichkeit im Backend geben, das einstellen zu können?

    Es war initial geplant das direkt mitzumachen, allerdings ist das Backend-Modul ziemlich umfangreich, wenn man nicht nur ein Feld mit ein paar IDs anbieten will. Ich schau mal ob wir das in den nächsten Versionen nochmal angehen.  

  • beatbeat MemberComments: 155 Received thanks: 15 Member since: March 2017
    Die robots.txt ist ja erstmal nur ein indikator dafür, wo die Sitemap liegt. 
    Und das ist keine gute Idee. Die robots.txt ist oft genug einfach nur ein Sicherheitsrisiko.
    Links zur Sitemap gehören da nicht rein. Weiterleitungen bei Sitemaps sollte es auch nicht geben.
    Man reicht die Sitemap ein bei den Suchmaschinen seiner Wahl per Webmastertools der per Ping.
    Idealerweise vergibt man keinen Standardnamen für eine Sitemap.
     
    Man sollte es den falschen Bots etc. nicht so einfach machen.
     
  • _marco__marco_ MemberComments: 22 Received thanks: 0 Member since: June 2017

    Hallo zusammen.

    Kann man die Komprimierung der Sitemap auch deaktivieren im Backend oder per Code?

  • n8lauschern8lauscher MemberComments: 177 Received thanks: 6 edited May 2019 Member since: October 2015

    Hallo @Moritz Naczenski

    ich möchte alle Produkte für alle Shops aus der Sitemap nehmen:

    <?php return array (
    	'db' => 
    	array (
    		'host' => 'localhost',
    		'port' => '3306',
    		'username' => 'xxx',
    		'password' => 'xxx',
    		'dbname' => 'xxx',
    	),
    
    	'sitemap' => [
            'excluded_urls' => [
    			[
                    'resource' => 'Shopware\Models\Article\Article',
                    'identifier' => '',
                    'shopId' => 0
                ]
            ]
        ]
    );

    leider geht das nicht - was mache ich falsch?
    Die gezipte Sitemap ist dann nach runterladen immer noch die alte? 
    oder wird Sie gecached? 

     

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013
    'resource' => 'Shopware\Models\Article\Article',

     

  • n8lauschern8lauscher MemberComments: 177 Received thanks: 6 edited May 2019 Member since: October 2015

    @Moritz Naczenski‍  
    leider immer noch die "original" Sitemap - die Produkte sind nach wie vor enthalten. 

  • Moritz NaczenskiMoritz Naczenski AdministratorsComments: 8363 Received thanks: 2482 Member since: September 2013
        'excluded_urls' => [
            [
                'resource' => 'Shopware\Models\Article\Article', // Möglich: Product, campaign, manufacturer, blog, category, static
                'identifier' => '0', // Die ID der o.g. Entität. Wenn leer (oder 0) wird die o.g. Resource komplett ausgeschlossen
                'shopId' => 0 // Die ID des Shops, für den dieser Ausschluss gilt. Bei 0 zählen alle Shops
            ]
        ]

    Funktioniert bei mir einwandfrei. Wie oben geschrieben braucht man mindestens eine 5.5.7 und muss danach die Sitemap über das Performance-Modul neu generieren.

    Thanked by 1n8lauscher
  • n8lauschern8lauscher MemberComments: 177 Received thanks: 6 Member since: October 2015

    @Moritz Naczenski

    ja klappt nun auch bei mir!

    Danke - hatte eineschließende Klammer falsch gesetzt. 

  • simplybecausesimplybecause MemberComments: 1708 Received thanks: 236 Member since: January 2012

    Wie kann man denn Seiten wie Kontakt, Newsletter, Frage zum Artikel usw. (alles, was unter form läuft) von der Sitemap ausschliessen?

  • Patrick StahlPatrick Stahl ModeratorComments: 507 Received thanks: 215 Member since: August 2011

    Versuch es mal damit als Resource:

    \Shopware\Models\Site\Site::class


    Liebe Grüße,
    Patrick Shopware

Sign In or Register to comment.