Immer auf URL mit Trailing Slash

Hi, ich habe in meiner .htaccess folgendes eingetragen damit an jeder URL immer ein / drangehangen wird und dadurch die URL nicht auf die Home-Seite weitergeleitet wird, sollte sich mal kein / am Ende befinden. # Immer auf URL mit Trailing Slash umleiten RewriteCond %{REQUEST\_FILENAME} !-f RewriteCond %{REQUEST\_URI} !(.\*)/$ RewriteRule ^(.\*)$ https://meine-domain.de/$1/ [L,R=301] Das ganze funktioniert jetzt aber komischerweise nur bei den “Oberkategorien”. Bei allen Unterkategorien werde ich auf die Startseite geschmissen. Jemand ne Idee woran das liegen könnte? Bzw. wie man es hinbekommt das wirklich jede URL, auch von Unterkategorien korrekt weitergeleitet werden. LG

Die Bedingung sieht meiner Meinung nach richtig aus. Den Trailing Slash per htaccess zu erzwingen ist leider keine gute Idee. Shopware arbeitet intern mit verschiedenen Endungen. Wird der Slash immer erzwungen, kann es passieren, dass einige Funktionen nicht mehr funktionieren. Bei uns funktionierte z.B. der Login im Backend nicht mehr, nachdem wir das Traling Slash über nginx-Direktiven (Entspricht der htaccess bei Apache Servern) erzwungen haben. Deshalb habe ich unter anderem das Plugin entwickelt Slash Weiterleitung entwickelt.

Irgendwie will das nicht so ganz funktionieren. Ich habe folgendes in den SEO Router Einstellungen stehen:

{if $sCategory.attribute.attribute6} {$sCategory.attribute.attribute6}/ {else} {sCategoryPath categoryID=$sCategory.id} {/if}

Im attr6 Feld steht meine SEO URL “ohne” /.

In meiner .htaccess steht:

# Immer auf URL mit Trailing Slash umleiten
RewriteEngine On
RewriteCond %{HTTP_HOST} ^meinedomain.de$ [NC]
RewriteRule ^(.*) http://www.meinedomain.de/$1 [L,R=301]

So, nun habe ich gefühlte 100 mal den SEO Index neu aufgebaut, Cache gelöscht usw. Es funktioniert aber nur bei manchen Kategorien. Kann da auch gerade kein bestimmtes System hinter erkennen, warum es nun bei manchen funktioniert und bei anderen nicht. Meistes funktioniert es aber nach wie vor bei den Hauptkategorien, sobald eine Unterkategorie in´s Spiel kommt leitet er mich auf die Startseite. Bei einer Kategorie funktioniert es aber sogar mit Unterkategorie. Was mache ich denn da verkehrt?

Hi Trixx,

 

wir haben das gleiche Problem auf unseren Seiten. Laut verschiedenen SEO Maschinen wird die fehlende Weiterleitung ohne / auch negativ von Google bewertet. 

Hat mittlerweile jemand eine Lösung dazu?

Nicht ganz die Lösung auf die Frage aber die Lösung für das Problem wäre dieses Plug-In:

@steinsoftware schrieb:

Nicht ganz die Lösung auf die Frage aber die Lösung für das Problem wäre dieses Plug-In:

http://store.shopware.com/zzott21822251783/slash-weiterleitung-seo-toolbox.html

Da hatte Zzotti hier ja nun auch schon  drauf hingewiesen. Nen Plugin soll dafür aber nicht genutzt werden. Schon garnicht für irgendwelche SEO Geschichten. Was mach ich wenn das Plugin nicht mehr weiterentwickelt wird, dann steh ich nachher da und habe riesen SEO Probleme, alles schon gehabt.

Wobei das dazu noch ne Sache ist die ja eigentlich im Standard funktionieren sollte, was ja auch teilweise so ist. Scheint dann eigentlich eher nen Bug in SW zu sein.

Bei der trailing slash Geschichte kommt aber auch dazu, dass es doch eigentlich völlig egal ist ob der Link nun mit oder ohne / erreichbar ist. Beim Anlegen der Artikeln entscheidet man sich einfach ob mit / oder ohne / (bei mir immer mit /). Diese URL crawlt Google, die andere URL gibt es ja dann auch eigentlich überhaupt nicht, also kann die auch nicht im index auftauchen und Kunden werden kaum über die Eingabe der URL in den Shop kommen. Die kommen über Google etc. und dort gibt es eben nur den korrekten Link, eben mit / oder ohne. Daher ist das Thema für mich auch nicht mehr interessant. 

@trixx schrieb:

Wobei das dazu noch ne Sache ist die ja eigentlich im Standard funktionieren sollte, was ja auch teilweise so ist. Scheint dann eigentlich eher nen Bug in SW zu sein.

Bei der trailing slash Geschichte kommt aber auch dazu, dass es doch eigentlich völlig egal ist ob der Link nun mit oder ohne / erreichbar ist. Beim Anlegen der Artikeln entscheidet man sich einfach ob mit / oder ohne / (bei mir immer mit /). Diese URL crawlt Google, die andere URL gibt es ja dann auch eigentlich überhaupt nicht, also kann die auch nicht im index auftauchen und Kunden werden kaum über die Eingabe der URL in den Shop kommen. Die kommen über Google etc. und dort gibt es eben nur den korrekten Link, eben mit / oder ohne. Daher ist das Thema für mich auch nicht mehr interessant. 

Bzgl. der Funktionsfähigkeit im Standard gebe ich dir vollkommen Recht. So wie ich es eingrenzen konnte, sind alle Shopseiten sowohl mit / also auch ohne / erreichbar. Lediglich die Kategorien machen da Ärger.

Bzgl. des Crawling ist es ja auch, dass Google einerseits den Doppel Content bewertet und andererseits eben diese Erreichbarkeit mit Trailing Slash oder eben auch ohne. Sollte es nun eine Möglichkeit geben, die Erreichbarkeit für die Kategorienseiten auf sowohl mit / als auch ohne / zu erweitern, kann man natürlich immer noch einen Canonical setzen, um Doppel Content zu vermeiden. 

Es wäre interessant, wenn sich ein Kollege von Shopware dazu einmal zu Wort melden könnte, warum diese Unterscheidung zwischen Kategorieseiten und Shopseiten getroffen wird. 

@Bruderherz schrieb:

@trixx schrieb:

Wobei das dazu noch ne Sache ist die ja eigentlich im Standard funktionieren sollte, was ja auch teilweise so ist. Scheint dann eigentlich eher nen Bug in SW zu sein.

Bei der trailing slash Geschichte kommt aber auch dazu, dass es doch eigentlich völlig egal ist ob der Link nun mit oder ohne / erreichbar ist. Beim Anlegen der Artikeln entscheidet man sich einfach ob mit / oder ohne / (bei mir immer mit /). Diese URL crawlt Google, die andere URL gibt es ja dann auch eigentlich überhaupt nicht, also kann die auch nicht im index auftauchen und Kunden werden kaum über die Eingabe der URL in den Shop kommen. Die kommen über Google etc. und dort gibt es eben nur den korrekten Link, eben mit / oder ohne. Daher ist das Thema für mich auch nicht mehr interessant. 

Bzgl. der Funktionsfähigkeit im Standard gebe ich dir vollkommen Recht. So wie ich es eingrenzen konnte, sind alle Shopseiten sowohl mit / also auch ohne / erreichbar. Lediglich die Kategorien machen da Ärger.

Bzgl. des Crawling ist es ja auch, dass Google einerseits den Doppel Content bewertet und andererseits eben diese Erreichbarkeit mit Trailing Slash oder eben auch ohne. Sollte es nun eine Möglichkeit geben, die Erreichbarkeit für die Kategorienseiten auf sowohl mit / als auch ohne / zu erweitern, kann man natürlich immer noch einen Canonical setzen, um Doppel Content zu vermeiden. 

Es wäre interessant, wenn sich ein Kollege von Shopware dazu einmal zu Wort melden könnte, warum diese Unterscheidung zwischen Kategorieseiten und Shopseiten getroffen wird. 

Hi,

doppelt content kann es aber eigentlich nicht geben da ja mittels 301 code auf die Startseite geleitet wird. Und Google kann ja auch nicht hellsehen und wird desshalb die URL auch nie anders als vom shopbetreiber eingegeben aufrufen oder sehe ich das falsch? Trotzdem natürlich komisch warum das ganze nicht korrekt funktioniert. Evtl mal nen Ticket zu aufmachen.

Aber nichtmal zalando interessiert sich so richtig dafür. Denn dort lassen sich Artikel mit und ohne Slash aufrufen und dass „ohne“ das hier der slash gecuttet oder drangehangen wird.

Beispiel: https://m.zalando.de/fairplay-quinn-jogginghose-fp422e00d-k11.html

Hängt man da nen / ans Ende ist der Artikel trotzdem erreichbar, der / wird aber nicht gecuttet. 

Hi,

 

ja der Doppel Content könnte ja auch erst entstehen, wenn die Seite sowohl mit / als auch ohne / aufrufbar ist. So wie es bei Zalando ist. Um diesen Doppel Content dann zu vermeiden wird im Quelltext ein Canonical Tag hinterlegt mit dem Verweis auf die gewollte Seite, z.B. mit /. 

Zalando macht es also genau richtig. Über beide Varianten ist der Artikel aufrufbar und wie im Quelltext zu sehen ist, wird mit einem Canonical auf eine Seite verwiesen.

Ein Ticket wäre wohl sinnvoll. Ich werde dazu eins anlegen. Wäre ja super, wenn möglichst viele Personen dieses auch markieren. Den Link bzw. Namen schreibe ich hier später noch rein. 

 

@Bruderherz schrieb:

Hi,

 

ja der Doppel Content könnte ja auch erst entstehen, wenn die Seite sowohl mit / als auch ohne / aufrufbar ist. So wie es bei Zalando ist. Um diesen Doppel Content dann zu vermeiden wird im Quelltext ein Canonical Tag hinterlegt mit dem Verweis auf die gewollte Seite, z.B. mit /. 

Zalando macht es also genau richtig. Über beide Varianten ist der Artikel aufrufbar und wie im Quelltext zu sehen ist, wird mit einem Canonical auf eine Seite verwiesen.

Ein Ticket wäre wohl sinnvoll. Ich werde dazu eins anlegen. Wäre ja super, wenn möglichst viele Personen dieses auch markieren. Den Link bzw. Namen schreibe ich hier später noch rein. 

 

Ach so ok, so genau hatte ich bei zalando nicht nachgeschaut. Hatte mir nur die URL angeguckt. Dennoch wird das aber bei shopware mit der Weiterleitung auf die Startseite abgefangen, zwar schöner wenn man auf dem Artikel bleiben würde aber immerhin kein duplicate content.  Bei mir sind auch nur die korrekten links bei Google und teilweise auch auf Seite eins. 

Naja Ticket wäre super, da ja trotzdem das ganze nicht so ganz hinhaut. Wäre super wenn du diesen dann hier postest, dann kann man mal Voten.

LG 

Hi,

 

hier der Link zum Ticket. 

Leider ist mir bei der Überschrift ein kleiner Fehler unterlaufen. Ich hoffe es wird trotzdem verstanden.

 

https://issues.shopware.com/#/issues/SW-14204?status=1&status=3&status=10001&status=4&status=10010&status=10025&status=10017&swversion=In%20Verification%20(Core)

 

Beste Grüße

Ich verstehe jetzt nicht wirklich das Problem. Warum nicht einfach alles so einstellen, das im SEO-Router kein Link mit „/“ am Ende erstellt wird, und danach alles was mit einem „/“ am Ende rein kommt, direkt per .htacces und 301 auf die Version ohne „/“ umrouten? Ich mach das so, und google hat wirklich gar nichts gemeckert in den letzten Monaten.

@sonic schrieb:

Ich verstehe jetzt nicht wirklich das Problem. Warum nicht einfach alles so einstellen, das im SEO-Router kein Link mit „/“ am Ende erstellt wird, und danach alles was mit einem „/“ am Ende rein kommt, direkt per .htacces und 301 auf die Version ohne „/“ umrouten? Ich mach das so, und google hat wirklich gar nichts gemeckert in den letzten Monaten.

Weil das irgendwie leider nicht funktioniert. 

Ich habe z.B. in einen meiner Shops (Neuinstallation 5.1.2 mittlerweile auf 5.1.3) folgendes in den SEO Router Einstellungen für das SEO-Urls Artikel Template stehen:
 

{if $sArticle.attr4} {$sArticle.attr4}/ {else} {$sArticle.id}/{$sArticle.name}/ {/if}

Hier hänge ich also immer einen / ans Ende der URL an, was auch soweit funktioniert. In meiner .htaccess habe ich folgendes stehen:

 

# Immer auf URL mit Trailing Slash umleiten
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://meinshop.de/$1/ [L,R=301]

# mehrere Trailing Slashes am Ende cutten
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

# mehrere Trailing Slashes nach der Domain und in der Domain cutten
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ //+([^\]*)
RewriteRule .* https://www.meinshop.de/%1 [R=301,L]

Beim Aufruf der URL „ohne“ Slash lande ich aber nur auf der Startseite. Eigentlich sollte hier ja nun ein / an die URL gehangen werden, funktioniert aber nicht. Das selbe mit den Kategorien. Da funktioniert es aber bei einigen und bei anderen nicht, warum? Keine Ahnung. Bei Artikeln funktioniert es bei mir überhaupt nicht.

Edit: Bei einigen Artikel funktioniert es auch. Beim Aufruf der URL ohne / wird automatisch ein / an die URL gehangen und ich werde „nicht“ auf die Startseite weitergeleitet, also so wie es auch sein soll. Warum das aber nur vereinzelt funktioniert ist mir nach wie vor ein Rätsel.

Ich stehe mit den RegExp. auch immer auf Kriegsfuß - und daran wird es liegen.

Ich glaube nicht, dass „am Ende Cutten“ das macht, was Du erwartest. Das sucht wohl eher nach zwei „//“ irgendwo mittendrin, KANN aber auch auf zwei am Ende matchen. Ich würde evtl, auf ^(.*)(/*)** testen, und danach **%1/**  übergeben ? [Edit: wohl eher nicht, könnte in einer Endlosschleife enden ==\> **^(.\*)/(/+) eher besser?]

Weil mir das zu kompliziert ist, mache ich es ja auch ohne „/“ am Ende  Wearing-Sunglasses

Wenn Du das in der Reihenfolge hast, müsste doch „am Ende cutten“ schon vor „Domain cutten“ greifen - und auch das zunächst umbauen.

@sonic schrieb:

Ich stehe mit den RegExp. auch immer auf Kriegsfuß - und daran wird es liegen.

Ich glaube nicht, dass „am Ende Cutten“ das macht, was Du erwartest. Das sucht wohl eher nach zwei „//“ irgendwo mittendrin, KANN aber auch auf zwei am Ende matchen. Ich würde evtl, auf ^(.*)(/*)$ testen, und danach %1/  übergeben ? [Edit: wohl eher nicht, könnte in einer Endlosschleife enden]

Weil mir das zu kompliziert ist, mache ich es ja auch ohne „/“ am Ende  Wearing-Sunglasses

Wenn Du das in der Reihenfolge hast, müsste doch „am Ende cutten“ schon vor „Domain cutten“ greifen - und auch das zunächst umbauen.

Ja mit dem „am Ende cutten“ schon vor „Domain cutten“ da könntest Du recht haben, da habe ich glaube ich etwas doppelt gemoppelt drin. Also / in der URL Cutten funktioniert. Am Ende der URL Cutten hingegen nicht. Aber ich habe auch einfach mal nur die erste Regel probiert und die anderen beiden rausgeschmissen, also: 
 

# Immer auf URL mit Trailing Slash umleiten
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ https://meinshop.de/$1/ [L,R=301]

Das ist ja auch eigentlich erstmal das was erreicht werden soll. Einfach dass alle URL´s nur mit / erreichbar sind. Zudem ja auch in den SEO Router Einstellungen so eingestellt. Was wie gesagt bei manchen Artikel sowie Kategorien einwandfrei funktioniert, da scheint das ganze also korrekt zu greifen. Bei anderen Artikeln/Kategorien aber nicht. Dabei ist da auch nichts anders konfiguriert als wie bei denen wo es funktioniert. Blick ich nicht warum das nicht läuft. Bin aber der Meinung dass es in einer älteren SW Version (müsste sogar noch unter der 4er gewesen sein) mal funktioniert hatte. Habe das in meinem alten Shop schon länger alles drin und mich damals etwas länger damit auseinander gesetzt und getestet und da lief das eigentlich. Läuft dort aber auch nicht mehr ganz rund. Scheint aber auch nicht so wild zu sein, da bei Google die korrekten Links drin sind usw. Google kennt ja auch nur die eine Version halt mit / oder ohne /. Ich habe aber leider auch keine Idee mehr woran es liegen könnte, gehe da auch eher von nem Bug aus. Ticket ist ja offen, mal sehen was da rauskommt. Wenn sonst noch Ideen, Tipps vorhanden sind, her damit.

Hast Du für die Artikel/Kategorien, bei denen es funktioniert, ggf. im SEO-Index von Shopware beide Versionen drinne? Also den Index mal mit und ohne aufgebaut? Dann könnte die Umleitung, bei denen das funktioniert, nicht unbedingt aus der htaccess kommen, sondern aus Shopware selber.

[Edit] Auch mal den Broswercache gelöscht, ob die Umleitung auch wirklich noch funktioniert? Chome z.B. merkt sich “301” und ruft sofort die umgeleitete Version auf!

@sonic schrieb:

Hast Du für die Artikel/Kategorien, bei denen es funktioniert, ggf. im SEO-Index von Shopware beide Versionen drinne? Also den Index mal mit und ohne aufgebaut? Dann könnte die Umleitung, bei denen das funktioniert, nicht unbedingt aus der htaccess kommen, sondern aus Shopware selber.

[Edit] Auch mal den Broswercache gelöscht, ob die Umleitung auch wirklich noch funktioniert? Chome z.B. merkt sich „301“ und ruft sofort die umgeleitete Version auf!

Danke. Ich hatte in einem anderen Beitrag gelesen dass man den Index einmal mit sowie ohne / aufbauen soll damit die Einstellungen dann auch greifen. Das hatte ich dann damals auch gefühlte 100mal gemacht (eben auch nochmal). Nach wie vor funktionieren aber nur vereinzelte. Nutze normalerweise Firefox, habe es eben auch mal mit Chrome probiert, vorher auch nochmal den gesamten Browsercache gelöscht, aber das selbe Ergebnis. 

Ich hab das auch über die Routereinstellungen gemacht. Einmal mit Slash, einmal ohne Slash. Funktioniert einwandfrei.
Du kannst aber auch den Weg über die Datenbank gehen und die URLs manuell hinzufügen/importieren. Den Weg gehe ich, wenn ich eine neue Kategorie hinzufüge, die mit und ohne Slash erreichbar sein soll.

@simplybecause schrieb:

Ich hab das auch über die Routereinstellungen gemacht. Einmal mit Slash, einmal ohne Slash. Funktioniert einwandfrei.
Du kannst aber auch den Weg über die Datenbank gehen und die URLs manuell hinzufügen/importieren. Den Weg gehe ich, wenn ich eine neue Kategorie hinzufüge, die mit und ohne Slash erreichbar sein soll.

Ich werde mir das irgendwann später, wenn etwas mehr Zeit ist, nochmal angucken. Aber eigentlich hatte ich es wie gesagt bereits mehrfach auch so gemacht. URL´s erst ohne Slash und danach mit Slash generiert. Und es handelte sich um eine frische 5er Version. In der Datenbank hatte ich glaube ich auch geguckt gehabt, ist aber auch schon wieder zu lange her mittlerweile, habe das alles gerade nicht mehr ganz auf dem Schirm. 

RewriteCond %{REQUEST_URI} !(.*)/$

=>

RewriteCond %{REQUEST_URI} !^(.*)/$

evtl? Könnte sein, dass das not sonst nur auf (.*) greift und nicht den ganzen Ausdruck