Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP und 301

Mehrere Domains, Domain-Umzug, neue Dateinamen, 301/302
Neues Thema Antworten
volksöl 3,5%
PostRank 1
PostRank 1
Beiträge: 23
Registriert: 25.07.2009, 11:53

Beitrag von volksöl 3,5% » 02.03.2010, 10:32

Hallo zusammen,

ich habe in der Forensuche nichts gefunden, daher hier meine Frage:

Ich habe eine 301 Weiterleitung mit PHP realisiert, da es bei meinem Hoster Probleme mit der htaccess gibt. (Ich weiß, ich weiß :roll: :D )

Folgender Code:

Code: Alles auswählen

<?php
header&#40;"Location&#58; http&#58;//www.neuedomain.de"&#41;;
?>
Ist das für G wirklich genau gleichwertig wie eine htaccess Weiterleitung?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


w3news
PostRank 8
PostRank 8
Beiträge: 938
Registriert: 10.10.2006, 23:17
Wohnort: Berlin

Beitrag von w3news » 02.03.2010, 10:54

Mach das mal lieber so:

Code: Alles auswählen

header&#40;"HTTP/1.1 301 Moved Permanently"&#41;; 
header&#40;"Location&#58; http&#58;//domain.de"&#41;; 
header&#40;"Connection&#58; close"&#41;;
Zu deiner Frage: Ja, es ist genauso gleichwertig, Google kann nicht erkennen, ob da per htaccess oder PHP umgeleitet wird, das pasiert ja auf dem Server.
MfG Lars

News, Tarife und Mobilfunk: w3news.de
Mobile Datenflatrates

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 02.03.2010, 11:31

w3news hat geschrieben:Mach das mal lieber so:
&#8222;Mach das mal lieber&#8220; ist dezent ausgedrückt, was er da gemacht hat, ist keine 301-, sondern eine 302-Weiterleitung.

Code: Alles auswählen

header&#40;"Connection&#58; close"&#41;;
Überflüssig, wenn nicht sogar schädlich.

Woher kommt eigentlich das weit verbreitete Bedürfnis, jegliche protokolleigenen Optimierungsversuche zu Boden zu trampeln? Der Unsinn, alles und jedes mit no-cache und Expires:0 auszuliefern, kommt ja aus derselben Kiste.

w3news
PostRank 8
PostRank 8
Beiträge: 938
Registriert: 10.10.2006, 23:17
Wohnort: Berlin

Beitrag von w3news » 02.03.2010, 11:38

Kannst Du mir kurz das mit dem Connection: close erklären, warum das schädlich sein kann?
MfG Lars

News, Tarife und Mobilfunk: w3news.de
Mobile Datenflatrates

volksöl 3,5%
PostRank 1
PostRank 1
Beiträge: 23
Registriert: 25.07.2009, 11:53

Beitrag von volksöl 3,5% » 02.03.2010, 11:43

Mork vom Ork hat geschrieben:

Code: Alles auswählen

header&#40;"Connection&#58; close"&#41;;
Überflüssig, wenn nicht sogar schädlich.
Danke Mork und w3news für Eure Hilfe.
Nur um sicher zu gehen, ist das dann so richtig?

Code: Alles auswählen

<?php
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;; 
header&#40;"Location&#58; http&#58;//www.neuedomain.de"&#41;;
?>

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 02.03.2010, 12:12

w3news hat geschrieben:Kannst Du mir kurz das mit dem Connection: close erklären, warum das schädlich sein kann?
HTTP 1.1 sieht vor, die Netzwerkverbindung zwischen Browser und Server nach einer Abfrage für weitere aufrecht zu erhalten. Hat der Browser zB / abgerufen und vom Server erhalten, kann er über dieselbe Verbindung gleich im Anschluss /basis.css abrufen und danach weitere Daten.

Connection: close schaltet diesen Mechanismus ab, die Verbindung wird zwangsweise geschlossen &#8211; was etwas doof ist, wenn danach weitere Daten von demselben Server abgerufen werden sollen.
Stell' dir vor, du möchtest mehrere Sachen aus einem Haus holen und musst für jedes einzelne Teil die Tür wieder aufschließen. Die Auf- und Zuschließerei ist völlig unnütze Arbeit, die nur aufhält. Connection: close ist quasi wie die Anweisung, nachdem du aus dem Haus kommst, die Tür wieder abzuschließen.

Nun entsteht zwar durch den zusätzlichen Aufwand auf Verbindungsebene ein Schaden in Form höherer Last, aber es ist sicherlich keine Katastrophe, der Benutzer wird davon in aller Regel nicht einmal etwas merken. Nichtsdestotrotz hast du von diesem Zusatzaufwand auch keinerlei Vorteil. Null. Nada. Niente. Also warum überhaupt damit anfangen? Wozu sich um Dinge kümmern, die von alleine wunderbar funktionieren?

Alle Browser sind in der Lage, ihre Verbindungen eigenständig zu verwalten, das sollte man ihnen auch lassen.

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 02.03.2010, 12:18

volksöl 3,5% hat geschrieben:Nur um sicher zu gehen, ist das dann so richtig?

Code: Alles auswählen

<?php
header&#40;"HTTP/1.1 301 Moved Permanently"&#41;; 
header&#40;"Location&#58; http&#58;//www.neuedomain.de"&#41;;
?>
Ja.

volksöl 3,5%
PostRank 1
PostRank 1
Beiträge: 23
Registriert: 25.07.2009, 11:53

Beitrag von volksöl 3,5% » 02.03.2010, 12:33

Dankeschön :D

w3news
PostRank 8
PostRank 8
Beiträge: 938
Registriert: 10.10.2006, 23:17
Wohnort: Berlin

Beitrag von w3news » 02.03.2010, 13:41

@MvO
Gut, hab mal alle weggelöscht... [funktioniert sogar noch :roll: :lol: ]
MfG Lars

News, Tarife und Mobilfunk: w3news.de
Mobile Datenflatrates

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 02.03.2010, 13:56

was ist mit einem

Code: Alles auswählen

exit&#40;&#41;;
Das Script läuft doch nach dem "header Location" noch weiter?


und der "connection close" ist hier wohl, in diesem Anwendungsfall, kein fehler ....
... wenn es auf eine Andere Domain geht, dann will ich ja von dort nichts mehr
Mork vom Ork hat geschrieben:
w3news hat geschrieben:Kannst Du mir kurz das mit dem Connection: close erklären, warum das schädlich sein kann?
HTTP 1.1 sieht vor, die Netzwerkverbindung zwischen Browser und Server nach einer Abfrage für weitere aufrecht zu erhalten. Hat der Browser zB / abgerufen und vom Server erhalten, kann er über dieselbe Verbindung gleich im Anschluss /basis.css abrufen und danach weitere Daten.

Connection: close schaltet diesen Mechanismus ab, die Verbindung wird zwangsweise geschlossen – was etwas doof ist, wenn danach weitere Daten von demselben Server abgerufen werden sollen.
Stell' dir vor, du möchtest mehrere Sachen aus einem Haus holen und musst für jedes einzelne Teil die Tür wieder aufschließen. Die Auf- und Zuschließerei ist völlig unnütze Arbeit, die nur aufhält. Connection: close ist quasi wie die Anweisung, nachdem du aus dem Haus kommst, die Tür wieder abzuschließen.
Ich hab die Erfahrung gemacht, wenn du zwei Webseiten miteinander quastschen läßt ...
.... Eine holt sich Daten von der Anderen

Dann muß die 2te nach dem "echo" (bzw dafor) einen connection close machen ....
.... sonst wartet das ganze noch 20 Sekunden ob der Kurier nochmal durch die Tür kommt ....
.... das wirkt sich auch auf Website 1 aus, den die hat zwar die Daten schon .... aber muß 20 Sekunden warten bis Website 2 sagt "ok, ich hab nix mehr für dich"

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 02.03.2010, 16:21

800XE hat geschrieben:was ist mit einem

Code: Alles auswählen

exit&#40;&#41;;
Das Script läuft doch nach dem "header Location" noch weiter?
In dem angefragten Skript

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.neuedomain.de");
?>

ist nach der zweiten header()-Zeile ja auch noch viel weiterzulaufen &#8230; Mal abgesehen davon spricht nichts dagegen, dass das Skript noch weiterläuft, vielleicht möchte man ja noch irgendwelche Verwaltungs- oder Protokollierungsaufgaben erledigen.
und der "connection close" ist hier wohl, in diesem Anwendungsfall, kein fehler ....
... wenn es auf eine Andere Domain geht, dann will ich ja von dort nichts mehr
Wenn eine HTML-Seite unter example.com/ Werbung über example.com/werbung.php einbindet und dieses PHP-Skript eine Weiterleitung an den eigentlichen Werbeanbieter ausgibt, bedeutet das noch lange nicht, dass die Domain example.com damit endgültig abgearbeitet ist und verlassen wird. Es können sich neben der Werbung noch Dutzende andere Grafiken, CSS-, Javascript- oder sonstwas für Daten in example.com/ befinden, die nach der Werbegrafik (-weiterleitung) abgerufen werden, um die Seitendarstellung zu vervollständigen.

Üblicherweise sieht es dann so aus, dass der Browser für die neue Domain eine weitere Verbindung aufmacht und die bestehende example.com-Verbindung, über die die Weiterleitung kam, parallel dazu für die weiteren Daten von example.com verwendet.

Wie ich bereits schrieb: Überlasse das Denken dem Browser, der kann das besser.
Ich hab die Erfahrung gemacht, wenn du zwei Webseiten miteinander quastschen läßt ...
.... Eine holt sich Daten von der Anderen

Dann muß die 2te nach dem "echo" (bzw dafor) einen connection close machen ....
.... sonst wartet das ganze noch 20 Sekunden ob der Kurier nochmal durch die Tür kommt ....
Ich möchte mal behaupten, dass zwischen dem Apache-Webserver oder den Browsern der großen Hersteller einerseits und irgendwelchen zusammengefrickelten PHP-Skripten andererseits doch ein ganz gewaltiger Unterschied besteht.
das wirkt sich auch auf Website 1 aus, den die hat zwar die Daten schon .... aber muß 20 Sekunden warten bis Website 2 sagt "ok, ich hab nix mehr für dich"
Im HTTP-Protokoll gibt es kein "Ich habe nichts mehr für dich". Die Datenpakete sind klar abgegrenzt, entweder durch die zwingend erforderliche Längenangabe oder durch das TCP-Verbindungsende. Wenn Webseite 1 noch eine Ewigkeit auf Daten wartet, obwohl sie bereits alles erhalten hat, was sie haben wollte, dann ist Webseite 1 schlichtweg fehlerhaft &#8211; mal ganz abgesehen davon, dass man üblicherweise die Wartezeit auf Daten mit anderen Dingen füllt, anstatt den kompletten Ablauf zu blockieren. Oder kurz: Webseite 1 ist Pfusch.

Wegen solchem Privatpfusch anständige Software, in diesem Falle: so ziemlich alle Webbrowser, auszubremsen, ist widersinnig.

TBT
PostRank 5
PostRank 5
Beiträge: 306
Registriert: 13.02.2008, 16:11

Beitrag von TBT » 02.03.2010, 16:47

wieso so umständlich?
Der header-Befehl bei PHP hat einen 2.Parameter, welcher den Statuscode beinhaltet!

Code: Alles auswählen

header&#40; "Location&#58; http&#58;//domain.de", 301 &#41;; 
für eine saubere 301-Weiterleitung reicht

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 02.03.2010, 19:34

TBT hat geschrieben:Der header-Befehl bei PHP hat einen 2.Parameter, welcher den Statuscode beinhaltet!

Code: Alles auswählen

header&#40; "Location&#58; http&#58;//domain.de", 301 &#41;;
für eine saubere 301-Weiterleitung reicht
Nein, es handelt sich um den dritten Parameter, der zweite hat eine andere Bedeutung und deine Zeile da oben tut nicht das, was sie soll (gibt 302 aus statt 301). header( "Location: http://domain.de", true, 301 ); wäre richtig.

Aber kennen tat ich den auch noch nicht :)

TBT
PostRank 5
PostRank 5
Beiträge: 306
Registriert: 13.02.2008, 16:11

Beitrag von TBT » 02.03.2010, 20:10

Sorry, mein Fehler!
Ist natürlich der 3. Parameter ;)

Antworten