Antworten:
$hostist eine Variable des Core- Moduls.
$ host
Diese Variable entspricht der Zeile Host im Header der Anforderung oder dem Namen des Servers, der die Anforderung verarbeitet, wenn der Host-Header nicht verfügbar ist.
Diese Variable kann in folgenden Fällen einen anderen Wert als $ http_host haben: 1) Wenn der Host-Eingabekopf fehlt oder einen leeren Wert hat, entspricht $ host dem Wert der Direktive server_name; 2) Wenn der Wert von Host die Portnummer enthält, enthält $ host diese Portnummer nicht. Der Wert von $ host ist seit 0.8.17 immer klein geschrieben.
$http_hostist auch eine Variable desselben Moduls, aber Sie werden sie nicht mit diesem Namen finden, da sie generisch als $http_HEADER( ref ) definiert ist.
$ http_HEADER
Der Wert des HTTP-Anforderungsheaders HEADER bei Konvertierung in Kleinbuchstaben und bei Konvertierung von 'Strichen' in 'Unterstriche', z. B. $ http_user_agent, $ http_referer ...;
Zusammenfassend:
$http_hostentspricht immer dem HTTP_HOSTAnforderungsheader.$hostgleich $http_host, klein geschrieben und ohne die Portnummer (falls vorhanden), außer wenn nicht HTTP_HOSTvorhanden oder ein leerer Wert ist . In diesem Fall $hostentspricht dies dem Wert der server_nameDirektive des Servers, der die Anforderung verarbeitet hat.server_nameAnweisungen haben. Wenn Sie im ersten einen regulären Ausdruck haben, wird dieser zum $hostund alle möglichen hässlichen Dinge können beim Umschreiben von Regeln passieren.
$server_nameVariable dem server_nameWert der Direktive oder dem tatsächlichen Servernamen, der ausgewählt wurde, wenn mehrere server_nameDirektiven vorhanden waren ?
$server_nameist immer gleich dem ersten Wert, der mit der Anweisung server_name angegeben wurde. Mit Zum Beispiel server_name example.com one.example.com two.example.com;, $server_namewird immer „example.com“ sein, unabhängig davon , welcher Host der Benutzer festgelegt hat . Wenn Sie keine haben default_server, ist der Host möglicherweise etwas völlig anderes (wie example.org).
server_name, der im aktuellen Serverblock definiert ist. Wenn Sie mehrereserver_names haben, wird nur das erste angezeigt.