Beispielcode für die Verwendung von Nginx zur Implementierung einer 301-Weiterleitung zum https-Stammdomänennamen

Beispielcode für die Verwendung von Nginx zur Implementierung einer 301-Weiterleitung zum https-Stammdomänennamen

Aus SEO- und Sicherheitsgründen ist eine 301-Weiterleitung erforderlich. Für die allgemeine Verarbeitung wird im Folgenden Nginx verwendet.

Ergebnisse erzielen

Die folgenden Adressen müssen auf den Stammdomänennamen https://chanvinxiao.com umgeleitet werden

  • http://chanvinxiao.com (http ohne www)
  • http://www.chanvinxiao.com (http mit www)
  • https://www.chanvinxiao.com (https mit www)

Der Unterschied zwischen 301 und 302

301 ist eine permanente Weiterleitung, 302 ist eine temporäre Weiterleitung. Der Hauptunterschied besteht darin, wie Suchmaschinen sie behandeln.

  1. 301: Suchmaschinen übertragen Gewicht und PR-Wert
  2. 302: Suchmaschinen führen keine zusätzlichen Verarbeitungsvorgänge durch

Nun möchten wir, dass die Suchmaschine denkt, die ursprüngliche Adresse existiere nicht mehr und sie vollständig auf die neue Adresse überträgt, also verwenden wir 301

http, zu https springen

Am einfachsten ist es, eine Umleitungsadresse direkt im Server zurückzugeben und in der Mitte einen Statuscode 301 hinzuzufügen (sonst ist der Standardwert 302).

Server {
 hören Sie 80;
 gibt 301 https://$host$request_uri zurück;
}
  • Sowohl return als auch rewrite gehören zu den Anweisungen des Rewrite-Moduls von Nginx. Da der Pfad hier nicht geändert werden muss, ist es bequemer, return zu verwenden.
  • $host und $request_uri sind eingebettete Variablen des Nginx-HTTP-Moduls. Die Kombination der beiden Variablen entspricht dem Ergebnis, das durch das Entfernen des http:// in der Anfrage entsteht.

www springt zum Stammdomänennamen

Dies muss nur in https verarbeitet werden, da alle http zu https springen

Server {
 hören Sie 443 SSL;
 Servername ~^(?<www>www\.)?(.+)$;
 wenn ( $www ) {
 Rückgabewert 301 https://$2$request_uri;
 }
...
  • Hier verwenden wir die reguläre Ausdrucksübereinstimmungsfunktion von Servername. Sie können sie aktivieren, indem Sie vor ihrem Wert ~ hinzufügen. Sie unterstützt die PCRE-Syntax.
  • Der reguläre Ausdruck wird verwendet, um zu bestätigen, ob ein Präfix von www. vorhanden ist, und um den Stammdomänennamen zu erfassen. Es werden zwei Variablen generiert, eine ist die benannte Erfassungsvariable $www und die andere die numerische Erfassungsvariable $2
  • Wenn die Verwendung von sequentiellen Erfassungsvariablen nicht unterstützt wird, wird andernfalls ein Fehler gemeldet (unbekannte „1“-Variable), daher wird ?<www> hinzugefügt, um $www den Wert von $1 zuzuweisen

Reduzieren Sie die Anzahl der Sprünge

Die obigen Einstellungen haben die Anforderungen erfüllt, aber es gibt einen Fehler. http://www.chanvinxiao.com springt zuerst zu https://www.chanvinxiao.com und dann zu https://chanvinxiao.com. Der zweite Sprung ist definitiv nicht so gut wie der erste Sprung. Es ist also besser, dies in einem Schritt zu tun. Ändern Sie die HTTP-Konfiguration wie folgt:

Server {
 hören Sie 80;
 Servername ~^(?:www\.)?(.+)$;
 Rückgabewert 301 https://$1$request_uri;
}

Ändern Sie im entsprechenden Server für http den Servernamen in den regulären Modus und ersetzen Sie $host durch den erfassten Stammdomänennamen $1
www wird hier direkt verworfen, es muss also nicht erfasst werden. Verwenden Sie ?:, um anzugeben, dass nur die Gruppierung ohne Erfassung erfolgt, sodass der Root-Domänenname dahinter zu $1 wird.
Das Ergebnis ist, dass unabhängig davon, ob der ursprüngliche Domänenname ein „www“ hat oder nicht, eine Weiterleitung zum „https“-Stammdomänennamen ohne „www“ erfolgt.

Zusammenfassen

Die obige Konfiguration erfordert keinen bestimmten Domänennamen, was der Kompatibilität und Portabilität dient. Sie verwendet die folgenden Funktionen von Nginx:

  • Regulärer Ausdruck für Servername
  • Die Rücksendeanweisung erhält den Statuscode und die Adresse
  • Eingebettete Variablen „$host“ und „$request_uri“

Dies ist das Ende dieses Artikels über die Verwendung von Nginx zur Implementierung einer 301-Weiterleitung zum https-Stammdomänennamen. Weitere relevante Inhalte zur Nginx 301-Weiterleitung zum https-Stammdomänennamen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Lösung für NGINX zum Umstieg von https auf http
  • So leiten Sie eine URL mit Nginx Rewrite um
  • So leiten Sie HTTP 301 auf einen Domänennamen mit www im Nginx-Server um
  • So zwingen Sie Nginx zur Verwendung des https-Zugriffs (http springt zu https)
  • So konfigurieren Sie die Nginx-Seitenumleitung entsprechend verschiedener Browsersprachen
  • Detaillierte Erläuterung der Nginx-Lösung des Homepage-Sprungproblems
  • Detaillierte Erklärung der Nginx 301-Weiterleitung zum Domänennamen mit www
  • Lösung für Nginx, das nicht zur Upstream-Adresse springt
  • So leiten Sie über den Nginx-Lastausgleich zu https um
  • Verwenden des Map-Befehls von Nginx zum Umleiten von Seiten
  • Lösen Sie das Problem, dass bei der Bereitstellung von thinkPHP 5 mit nginx nur auf die Startseite umgeleitet wird
  • Nginx verbietet den direkten Zugriff über IP und leitet auf eine benutzerdefinierte 500-Seite weiter
  • Detaillierte Erläuterung der Nginx-Rewrite-Jump-Anwendungsszenarien
  • Detaillierte Erklärung, wie man HSTS in nginx aktiviert, um den Browser zu zwingen, auf HTTPS-Zugriff umzuleiten
  • Implementierung des Umschreibesprungs in Nginx
  • Detaillierte Erläuterung der Standortübereinstimmung und der Umleitung in Nginx
  • Versteckte Nginx-Weiterleitung (Browser-URL bleibt nach der Weiterleitung unverändert)

<<:  jQuery benutzerdefinierter Lupeneffekt

>>:  Vue implementiert ein Suchfeld mit einer Lupe

Artikel empfehlen

Analyse impliziter Fehler bei der gleichzeitigen Replikation von MySQL 5.7

Vorwort Die meisten unserer MySQL-Onlineumgebunge...

Der Implementierungsprozess der ECharts Multi-Chart-Verknüpfungsfunktion

Wenn viele Daten angezeigt werden müssen, ist die...

Implementierung von LNMP für die separate Bereitstellung von Docker-Containern

1. Umweltvorbereitung Die IP-Adresse jedes Contai...

Installieren Sie mysql5.7.17 mit RPM unter Linux

Die Installationsmethode von MySQL5.7 rpm unter L...

...

Beispiel zur MySQL-Passwortänderung – ausführliche Erklärung

Beispiel zur MySQL-Passwortänderung – ausführlich...

Implementierung des Deployment-War-Package-Projekts mit Docker

Um War mit Docker bereitzustellen, müssen Sie ein...

So verwenden Sie fdisk zum Partitionieren der Festplatte in Linux

Häufig verwendete Befehle für Linux-Partitionen: ...

Schritte zur Überprüfung der MySQL InnoDB-Row_ID-Grenzwertüberschreitung

Hintergrund Ich habe mit meinen Klassenkameraden ...