Seite 1 von 1

Fehler von de.onpage.org Canonical

Verfasst: 26.11.2016, 18:49
von euf
Hallo
Ich habe heute mal die kostenlose Version con Onpage.org über meine Seite laufen lassen. Jetzt steht bei: Nicht-indexierbare Seiten mit hohem OPR - folgender Fehler

Code: Alles auswählen

http://seite.com
Vererbt den gesamten PageRank an: http://seite.com/ 
Canonical auf andere Seite
meine Weiterleitungen in der htaccess

Code: Alles auswählen

RewriteEngine on
RewriteRule ^category/(.+)$ /$1 [R=301,L]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.seite\.com [NC]
RewriteRule (.*) http://seite.com/$1 [R=301,L]
RewriteEngine on
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://seite.com/$1 [L,R=301]
System

Wordpress

Ist die Schlimm, und wenn ja wie kann ich das beheben?

Verfasst:
von

Verfasst: 01.12.2016, 13:17
von mediadonis
Servus!
Freut mich sehr, dass Du unser OnPage.org Free für die Optimierung Deiner Webseite einsetzt :)
Bzgl. Deiner Frage:
Letztendlich besteht hier kein wirkliches "Problem", da Du ja einen Canonical von der non-slash Variante auf die slash Variante der Domain gesetzt hast. Ein Canonical ist hier zwar nach dem 301er die zweitbeste Option, aber dennoch gut und richtig gelöst.

Um generell von non-slash auf slash Varianten weiterzuleiten, musst Du Deine htaccess nur um ein paar Zeilen erweitern:

RewriteEngine on
RewriteCond %{REQUEST_URI} !.(php|html?|jpg|gif|css|js|css?|js?|php?)$
RewriteRule ^((.*)[^/])$ /$1/ [L,R=301]

Aleyda hat hier einen sehr schönen Redirect Generator - evtl. hilfreich in der Zukunft:
https://www.aleydasolis.com/htaccess-re ... generator/

Viel Erfolg weiterhin und happy optimizing :)

Verfasst: 01.12.2016, 14:09
von mwitte
@marcus: Danke für den Link mit dem Redirect generator -- kannte ich nicht -- ist aber cool!

Verfasst: 04.12.2016, 16:42
von euf
ich habe keinen Canonical angegeben, dass hat Wordpress automatisch gemacht.
ich möchte dir Urls aber ohne einen slash am Ende.
Warum fügt Wordpress automatisch den Canonical ein?

Verfasst: 04.12.2016, 16:55
von euf
der Code entfernt den Slash

Code: Alles auswählen

remove_action('wp_head', 'rel_canonical');

Verfasst:
von

Verfasst: 04.12.2016, 19:01
von M2
Der Canonical ist doch zur Vermeidung von Duplicate Content innerhalb einer Domain geschaffen worden. Somit lassen sich eben doppelte Inhalte technisch kennzeichnen und vermeiden.

Damit kannst du dem Bot sagen: "Hey, du bist zwar auf der Seite example.com/category/, aber der eigentliche Inhalt liegt example.com/category". Also mit und ohne "/"

Das hat aber nullkommagarnix mit der URL zu tun, die in der Adressleiste steht. Das regelt man dann über die .htaccess. (oder in WordPress über die Permalinks, was aber aufs Gleiche hinaus läuft).

Das WP erstmal prophylaktisch einen Canonical setzt, ist doch völlig ok. Es schadet nichts dem Bot mitzuteilen, das example.com/ ist eigentlich unter example.com erreichbar ist.

Deswegen auch die völlig richtige Antwort
Letztendlich besteht hier kein wirkliches "Problem", da Du ja einen Canonical von der non-slash Variante auf die slash Variante der Domain gesetzt hast. Ein Canonical ist hier zwar nach dem 301er die zweitbeste Option, aber dennoch gut und richtig gelöst.
die Dir marcus schon gegeben hat.

Verfasst: 04.12.2016, 22:48
von /Affilitiv/
mediadonis hat geschrieben:Letztendlich besteht hier kein wirkliches "Problem",
nachdem ich hier 3 mal gelesen hatte, merke ich erst das oben im Post die Domain mit bzw ohne / endet



da Du ja einen Canonical von der non-slash Variante auf die slash Variante der Domain gesetzt hast. Ein Canonical ist hier zwar nach dem 301er die zweitbeste Option, aber dennoch gut und richtig gelöst. [/quote]
ähm?

habe eben eine DOmain im FF aufgerufen
einmal mit / einmal ohne
dann das selbe mit IE
Ergebniss
FF zeigt in der URLzeile niemals den /
IE zeigt den / immer


dann (auch mit beiden Browser; Das ist zwar unötig ....)
mit HTTPreader ....
https://www.andyhoppe.com/software/http ... header.htm
wieder mit / und ohne
auf der "Ausgabeseite" steht dann immer der / als Adresse drin

Fazit
Domain, ohne Pfad und oder Datei hat teschnisch trotzdem einen / der von FF aber nicht angezeigt wird

also, Domain ohne Slash gibts NiCHT







für HTTPread habe ich eine funktion

Code: Alles auswählen

function httpheader( $url ,$headonly=0)
{ 
	$TEXT=    strtok($url,'/');$TEXT=str_replace(':','',$TEXT);
	$host=    strtok(     '/');
	$path='/'.strtok(      '');
	
	$domain['host'] =       @gethostbyname( $host );
	$domain['host'].=' @ '. @gethostbyaddr( $domain['host'] );
	
   if (strlen($TEXT)==5)
   {
       //$host='ssl://'.$host;
         $PORT=443;
   }else $PORT=80;$PORT=80;
	
	$fp = @fsockopen ($host, $PORT, $error_number, $error_string, 30);
  	if ($fp)
	{
		fputs ($fp, "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n");
/*
                if (strlen($TEXT)==5)
		     fputs ($fp, "GET $path HTTPS/1.1\r\nHost: $host\r\n\r\n");
		else fputs ($fp, "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n");
*/
		
		$buffer=''; $block=256; $httph=0;
		while (!feof($fp) && ++$httph) 
		{
			$line=fgets($fp,$block);
			if ( !strlen( trim($line) ) ) $httph=-1;
			elseif ( $httph==1 )
			{
				$domain['tp']  =strtok($line,' ');
				$domain['stat']=strtok(       '');
			}
			else
			{
				$tok         =strtolower(strtok($line,':'));
				$domain[$tok]=           strtok(       '');
			} $domain[http].=$line;
		}
		while (!feof($fp) && !$headonly) 
		{
			$line=fgets($fp,$block);
			$domain[html].=$line;
		}
		fclose($fp);
//		$content.=nl2br($domain[http]);
	}
	return($domain);
}

mal kurz abwandeln
um zu sehen was passiert

Code: Alles auswählen

$path='';
		fputs ($fp, "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n");

Ergebniss .... HTTP/1.1 400 Bad Request


Also
Domain ohne Slash aufrufen geht nicht (der Browser hängt einen dran)