header - weiterleitung zu www. ...
Jense
- php
Hallo,
ich habe eine Domain, die sowohl unter www.domain.eu als auch unter domain.eu erreichbar ist. Nun möchte ich, dass jemand, der domain.eu ohne "www." direkt auf die Domain mit "www." weitergeleitet wird. Da mein Hoster Strato heißt (ja, ich kann nix dafür), wird mod_rewrite leider nicht unterstützt. Nun habe ich es mit folgendem Code versucht, der am Anfang meiner Seite steht:
<?php if(substr($_SERVER['SERVER_NAME'], 0, strpos($_SERVER['SERVER_NAME'], '.')) !== 'www') {
header('<font class="defaultfont">HTTP/1.1 301 Moved Permanently</font>');
header("Location: http://www.".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
}
?>
Leider passiert nichts wenn ich die Domain ohne www. aufrufe - keine weiterleitung und auch keine Fehlermeldung.
Kann mir vielleicht jemand sagen, woran das liegt?
Vielen Dank schon mal
JenSe
echo $begrüßung;
<?php if(substr($_SERVER['SERVER_NAME'], 0, strpos($_SERVER['SERVER_NAME'], '.')) !== 'www') {
Warum nimmst du nicht einfach die ersten 4 Zeichen und vergleichst sie mit "www."?
header('<font class="defaultfont">HTTP/1.1 301 Moved Permanently</font>');
HTML-Code hat in einem HTTP-Header nichts zu suchen. Den Statuscode, wenn er im Spezialfall Location-Header anders als 302 ist, kann man als dritten Parameter von header() übergeben.
echo "$verabschiedung $name";
Warum nimmst du nicht einfach die ersten 4 Zeichen und vergleichst sie mit "www."?
Wie mache ich denn das genau? Leider bin ich noch nicht der php-Könner, der ich gerne wäre...
echo $begrüßung;
Warum nimmst du nicht einfach die ersten 4 Zeichen und vergleichst sie mit "www."?
Wie mache ich denn das genau? Leider bin ich noch nicht der php-Könner, der ich gerne wäre...
Die Zeichen von Anfang bis zur Position des ersten Punkts hast du doch auch bekommen.
Vier Zeichen vom Anfang eines Strings: substr($delinquent, 0, 4);
echo "$verabschiedung $name";
Hi,
ich habe eine Domain, die sowohl unter www.domain.eu als auch unter domain.eu erreichbar ist. Nun möchte ich, dass jemand, der domain.eu ohne "www." direkt auf die Domain mit "www." weitergeleitet wird.
warum nicht anders herum? www ist inzwischen wirklich überflüssig.
Da mein Hoster Strato heißt (ja, ich kann nix dafür), wird mod_rewrite leider nicht unterstützt.
und warum wechselst Du ihn dann nicht?
Nun habe ich es mit folgendem Code versucht, der am Anfang meiner Seite steht:
<?php if(substr($_SERVER['SERVER_NAME'], 0, strpos($_SERVER['SERVER_NAME'], '.')) !== 'www') {
header('<font class="defaultfont">
Woher hast Du diesen Unsinn? Ein HTTP-Header transportiert doch keinen (zudem völlig veralteten) HTML-Code.
freundliche Grüße
Ingo
Da mein Hoster Strato heißt (ja, ich kann nix dafür), wird mod_rewrite leider nicht unterstützt.
und warum wechselst Du ihn dann nicht?
Danke Ingo!! Ja, ich gebe zu, ich habe mich unklar ausgedrükt... Ich mache die Seite nicht für mich und habe den Proider nicht ausgesucht. Käme ein Providerwechsel gerade in Frage, hätte ich die Frage wohl so nicht gestellt...
Ich würde das so lösen:
if ( strpos('www.', $_SERVER['SERVER_NAME']) !== false )
{
header('Location: http://domain.eu');
exit();
}
Gruß
Bernd
Ich würde das so lösen:
if ( strpos('www.', $_SERVER['SERVER_NAME']) !== false )
{
header('Location: http://domain.eu');
exit();
}Gruß
Bernd
Das habe ich versucht, allerdings so:
if ( strpos('www.', $_SERVER['SERVER_NAME']) !== false )
{
header('Location: http://www.domain.eu');
exit();
}
Es tut sich nichts. Egal, ob ich die Adresse mit oder ohne www. angebe...
Leider reicht mein php nnoch nicht ganz aus, um die Funktion strpos zu verstehen. Woran könnte es liegen, dass es nicht klappt?
Hi!
Das habe ich versucht, allerdings so:
if ( strpos('www.', $_SERVER['SERVER_NAME']) !== false )
{
header('Location: http://www.domain.eu');
exit();
}
*lacht* Du pruefst ob www. in Deinem string vorkommt und WENN es das tut (nicht false ist) leitest Du zu www.domain.eu um.
Es tut sich nichts. Egal, ob ich die Adresse mit oder ohne www. angebe...
Logisch, weil www. zu www. umgeleitet wird. :)
Leider reicht mein php nnoch nicht ganz aus, um die Funktion strpos zu verstehen. Woran könnte es liegen, dass es nicht klappt?
Es ist hier nicht dein php, das nicht ausreich strpos() (http://www.php-resource.de/handbuch/function.strpos.htm) zu verstehen. Hier haperts grad eher an Logik.
Solltest Du unbedingt auss www umleiten wollen (warum immer) dann sollte es so aussehen:
if ( strpos('www.', $_SERVER['SERVER_NAME']) === false )
Erklaerung:
Wenn die Position des Strings 'www.' nicht existiert, dann...
EDIT:
Oehm. Da poste ich schon nen Link zu strpos...
Korrigier mich wer, wenn ich mich irre, aber wird mit
if ( strpos('www.', $_SERVER['SERVER_NAME']) !== false )
nicht IN 'www.' gesucht statt NACH 'www.'?
if ( strpos($_SERVER['SERVER_NAME'], 'www.',) !== false )
sollte dann korrekter sein... *zu Bernd schiel*
Das grundlegende Problem scheint zu sein, dass $_SERVER['SERVER_NAME'] mir immer www.domainname.de ausgibt, egal ob die Adresse im Adressfeld des Browsers mit www oder ohne eingegeben wird.
Gruß
Jense
Moin!
Das grundlegende Problem scheint zu sein, dass $_SERVER['SERVER_NAME'] mir immer www.domainname.de ausgibt, egal ob die Adresse im Adressfeld des Browsers mit www oder ohne eingegeben wird.
Richtig, denn genau das ist die Aufgabe dieser Angabe: Wiedergabe des im virtuellen Hosts konfigurierten Servernamens - des Hauptnamens, weil auch Aliasnamen möglich sind, siehe dein Beispiel (mit www und ohne www - zwei Namen, nur ein VHost).
Die Angabe, die du suchst, ist die Domain, mit der der Browser den virtuellen Host aufgerufen hat. Der steht in $_SERVER['HTTP_HOST'] - alles, was in $_SERVER steht und mit HTTP_ beginnt, kommt vom Browser-Request.
- Sven Rautenberg
Die Angabe, die du suchst, ist die Domain, mit der der Browser den virtuellen Host aufgerufen hat. Der steht in $_SERVER['HTTP_HOST'] - alles, was in $_SERVER steht und mit HTTP_ beginnt, kommt vom Browser-Request.
Hmm, das klingt sehr logisch. Allerdings gibt er mir mit echo $_SERVER['HTTP_HOST'] auch immer www.domainname.de aus. Egal, ob ich es mit oder ohne www. eingegeben habe. Kann das alles so kompliziert sein?
Hi,
Allerdings gibt er mir mit echo $_SERVER['HTTP_HOST'] auch immer www.domainname.de aus. Egal, ob ich es mit oder ohne www. eingegeben habe. Kann das alles so kompliziert sein?
bei Strato vielleicht ja? Nomalerweise sollte das funktionieren.
Aber warum willst Du bzw. der Seitenbetreiber diese Umleitung überhaupt einrichten? Sicherlich ist es "schöner", wenn Seiteninhalte nicht über verschiede URLs aufrufbar sind, aber - falls es darum gehen sollte - Google wertet die www-Subdomain nicht als andere Adresse, so dass beide Versionen z.B. denselben PR bekommen.
freundliche Grüße
Ingo
Aber warum willst Du bzw. der Seitenbetreiber diese Umleitung überhaupt einrichten? Sicherlich ist es "schöner", wenn Seiteninhalte nicht über verschiede URLs aufrufbar sind, aber - falls es darum gehen sollte - Google wertet die www-Subdomain nicht als andere Adresse, so dass beide Versionen z.B. denselben PR bekommen.
Ja, fände es einfach "schöner"... Zusätlich ärgert es mich inzischen, dass es nicht geht! Hat jemand Erfahrung mit Strato und $_SERVER['HTTP_HOST'] Das kann doch nicht wirklich an Strato liegen, oder?
Hallo Jense,
kannst Du htaccess benutzen und somit mod_rewrite?
Das wäre eine elegantere Möglichkeit!
Gruß
Reiner
Hi,
kannst Du htaccess benutzen und somit mod_rewrite?
Kannst du Lesen?
Wenn ja, versuch diese Faehigkeit noch mal auf's Eingangsposting anzuwenden :-)
MfG ChrisB
Hi,
kannst Du htaccess benutzen und somit mod_rewrite?
Kannst du Lesen?
Wenn ja, versuch diese Faehigkeit noch mal auf's Eingangsposting anzuwenden :-)
sorry!!!