Zur Navigation

Korrekter 404 Status code Ausgabe bei Noslash Weiterleitungen

1 six

Habe eine Fehlerseite (404.html) erstellt sie ins rootverzeichnis geladen
und ErrorDocument 404 /404.html in die htaccess geschrieben.

Jetzt bringt mir OnPage die Meldung:
Es scheint als würden 404 Seiten nicht korrekt mit einem 404 Status Code antworten.
Wir haben eine zufällige Seite aufgerufen und diese hat mit dem Status Code 301 geantwortet. Dies kann zu Duplicate Content führen und zur Verschwendung von Crawl-Equity.
Status Code: 301
(zufällig) getestete URL: http://www.friseur-damianos.de/3ec6dcd6481723d78945c1f551efb555973e7181/
The random page redirects to: http://www.friseur-damianos.de/3ec6dcd6481723d78945c1f551efb555973e7181

Klar in der htaccess ist eine Weiterleitung zu no slash am URL Ende.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/+$ http://%{HTTP_HOST}/$1 [R=301,L]

Gibt man im Browser/Code Checker eine zufällige URL ohne slash am Ende ein
gibt es eine 404 Meldung, mit slash gibt es erst 301 und dann die 404

Wenn man jetzt das script umstellt auf slash am Ende gibt ewige hin und her Umleitungen.

Habe das Script jetzt komplett entfernt und erhalte für beide Varianten korrekte 404 Meldung.
Aber ohne das Script habe ich ja auch einen DC !

Und den nächsten Fehler...

Gibt man ein ohne slash also:
www.friseur-damianos.de/123
ist alles o.k die Fehlerseite 404.html wird richtig angezeigt.

Gibt man ein mit slash also:
www.friseur-damianos.de/123/
wird die Fehlerseite nicht korrekt angezeigt
das Hindergrundbild fehlt, der verlinkte Button ist auch nicht da
und der link zur Startseite lautet statt index.htm jetzt /123/index.htm
somit ist der User da drin gefangen und kommt nicht weiter.

Tja wat soll ich da jetzt tun? Please Help...

Six

13.02.2017 21:34

2 Jörg Kruse

In der 404.html würde ich mit absoluten URLs verlinken, also mit Slash am Anfang:

<p><a href="/index.htm"><img src="/images/button-startseite.jpg" alt="button-startseite" width="140" height="29" border="0"></a></p>

... dann stimmen die Pfade unabhängig von der (virtuellen) Verzeichnistiefe

Gibt es auf der Website denn Seiten mit einer virtuellen URL, die nicht auf eine Dateiendung enden?

Falls nein, könntest du für solche URLs mit Slash am Ende in etwa folgendermaßen einen Status 410 "Gone" erzeugen:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^\.]+/+$ [G,L]

... und zwar oberhalb der Weiterleitung. Diese wird dann nur noch für URLs mit Punkt ausgeführt, wie z.B. http://www.friseur-damianos.de/salon.htm/

Ein Fehler 410 wird von Google hier sogar empfohlen ggü. einem Fehler 404 - ggf. musst du dann noch eine Fehlerseite für den Status Code 410 einrichten :)

Edit:

... wobei mir noch nicht so ganz klar ist, woraus der DC entsteht, wenn zuerst mit 301 weitergeleitet wird und erst dann ein 404 ausgegeben wird? ich würde den obigen Aufwand eigentlich nur betreiben, wenn solche fehlerhaften URLs vielfach extern verlinkt sind

13.02.2017 22:14 | geändert: 13.02.2017 22:21

3 six

Zitat von Jörg
Gibt es auf der Website denn Seiten mit einer virtuellen URL, die nicht auf eine Dateiendung enden?
Nein habe ich nicht die enden alle als .htm
Mit dem Slash geht es mir nur um die Startseite!
Denn OnPage meldet DC die Startseite ist 3 fach vorhanden und zwar so:
http://www.friseur-damianos.de/index.htm
http://www.friseur-damianos.de/
http://www.friseur-damianos.de
-------
Die weiterleitung (index weg) hamer ja vor kurzem gelöst,
mit der noSlash weiterl. habe ich gedacht das dann nur noch
http://www.friseur-damianos.de stehen bleibt.

Hmpf jetzt bin ich noch mehr verwirrt,
Gut morgen ist auch noch ein Tag)) Gute Nacht

13.02.2017 23:53

4 Jörg Kruse

http://www.friseur-damianos.de/
http://www.friseur-damianos.de

Das ist IMHO kein DC. Bei der letzten URL ist die Pfadangabe leer. Ein leerer Pfad "" wird günstigstenfalls entweder schon vom Browser oder vom Webserver in den Wurzel-Pfad "/" umgewandelt. Verlassen würde ich mich aber nicht dadrauf. Schlimmstenfalls kann ein Webbrowser / Bot daraus keine HTTP-Abfrage herleiten, oder ein Webserver antwortet mit einem Fehler 400 "Bad Request". Ich würde deswegen solche URLs immer mit Slash am Ende verlinken.

Was vielleicht zur Verwirrung beiträgt:
Die Webbrowser zeigen seit einigen Jahren eine URL, welche auf das Wurzelverzeichnis verweist, in der Adresszeile ohne Slash am Ende an. Das hat wohl eher ästhetische Gründe - genauso wie das http:// am Anfang weggelassen wird. Die vollständige URL lautet dann aber trotzdem http://www.example.com/ und nicht www.example.com - was man auch sieht, wenn man die URL aus der Adresszeile in eine Textdatei kopiert und umgekehrt :)

14.02.2017 10:00 | geändert: 14.02.2017 10:02

5 six

Jörg vielen Dank für deine Mühe..

Gut dann lasse ich das ganze mal so stehen, ab morgen darf ich bei OnPage
eine Abfrage machen, mal schauen was er dann bringt.

14.02.2017 10:54

6 six

Ja und was zeigt ein smartphone an wenn man einen kaputten Link eingibt?
NICHTS! Hängt ewig in der Schleife fest.
Ist klar im mobilen verzeichnis "m" gibt es keine 404.html Fehlerseiten.
Folglich habe ich sie da rein kopiert, jetzt wird sie angezeigt und der User kann weiter surfen.
Aber was sagt papa google dazu ist das DC? Seite ist ja doppelt--lol

Nee wie sieht der mobile googlebot das bekommt er eine 404 Meldung?
In PageSpeed Insights eingegeben, Ergebnis:

Desktop:
PageSpeed Insights hat eine Antwort des Typs 404 vom Server erhalten.

Mobil:
Ihre Seite enthält 2 Weiterleitungen. Weiterleitungen verzögern das Laden der Seite.
Vermeiden Sie Zielseiten-Weiterleitungen für die folgende Kette weitergeleiteter URLs.
http://www.friseur-damianos.de/5544e.htm
http://www.friseur-damianos.de/m/5544e.htm
http://www.friseur-damianos.de/m/404.html

Tja also keine korrekte 404 nur Weiterleitungen, und ist das jetzt schlecht?
Falls ja und wie will man das denn ändern? ei ei ei.

Jonas langsam habe ich genug von dem mobile gelumpe, jedes mal wenn man denkt
man hat alle Berge erklumen steht der Mount Everest vor einem.

---------

14.02.2017 13:53

7 Jörg Kruse

Wie leitest du denn mobil weiter ins Verzeichnis /m/ ?

14.02.2017 14:24

8 six

Mittels htaccess.

RewriteEngine on

# don't apply the rules if you're already in the mobile directory, infintine loop
RewriteCond %{REQUEST_URI} !^/m/.*$
# if the browser accepts these mime-types, it's definitely mobile, or pretending to be
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
# a bunch of user agent tests
RewriteCond %{HTTP_USER_AGENT} (android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-) [NC]
RewriteRule ^(.*)$ http://www\.friseur-damianos\.de/m/$1 [R=301,L]

----

14.02.2017 15:36

9 Jörg Kruse

Besteht die Website nur aus statischen URLs? dann würde ich auch nur existierende Dateien und Verzeichnisse weiterleiten:

# don't apply the rules if you're already in the mobile directory, infintine loop
RewriteCond %{REQUEST_URI} !^/m/.*$
# only existent files / directories
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
# ...

... und nach der Änderung die Browser-Caches leeren (da sich diese die alten 301-Redirects merken)

14.02.2017 16:16

10 six

Habs ausprobiert..
Funzt Google zeigt keine Weiterleitungen mehr an.
Allerdings ehällt er aber immer noch kein echten 404 Stauts code zurück.
Ist aber auch egal sein Problem...

----

14.02.2017 16:49