WWW zu nicht WWW Redirect mit PHP
Möchte ich umleiten www.domain.com Anfragen domain.com mit PHP, im Grunde:
if (substr($_SERVER['SERVER_NAME'], 0, 4) === 'www.')
{
header('Location: http://' . substr($_SERVER['SERVER_NAME'], 4)); exit();
}
Aber ich Tue pflegen möchten, die angeforderte URL, wie in ALSO, für z.B.:
http://www.stackoverflow.com/questions/tagged/php?foo=bar
Sollte eine Weiterleitung zu:
http://stackoverflow.com/questions/tagged/php?foo=bar
Ich will nicht zu verlassen Sie sich auf .htaccess
Lösungen, und ich bin nicht sicher, welche $_SERVER
vars würde ich verwenden, um dies geschehen zu lassen. Auch die Erhaltung des HTTPS-Protokolls wäre ein plus.
Wie sollte ich das tun?
InformationsquelleAutor der Frage Alix Axel | 2010-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden, leiten Sie den Benutzer auf die exakt gleiche Seite, www. intakt.
Also, um loszuwerden des www. wir ersetzen Sie einfach eine Zeile:
Und das sollte funktionieren.
Durch die Art und Weise, dies ist die Methode, die wird auch von Google empfohlen, da es hält
https://
intakt, zusammen mit ports und so, wenn Sie Sie verwenden.Als Gumbo wies darauf hin, er verwendet
$_SERVER['HTTP_HOST']
wie es kommt aus dem Header statt dem server, so$_SERVER['SERVER_*']
ist nicht so zuverlässig. Sie ersetzen könnten einige$_SERVER['SERVER_NAME']
mit$_SERVER['HTTP_HOST']
und es sollte funktionieren auf die gleiche Weise.InformationsquelleAutor der Antwort Tyler Carter
Versuchen Sie dies:
InformationsquelleAutor der Antwort Gumbo
if (isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != "off")) {
$https = 1;
} else {
$https = 0;
}
if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
redirect(($https?'https://':'http://') .'www.' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}
InformationsquelleAutor der Antwort amar nath jena