Hoe tijdelijke en permanente redirects te maken met Nginx

Introductie

HTTP-omleiding is een manier om het ene domein of adres naar een ander te verwijzen. Er zijn verschillende soorten omleidingen, elk met een andere betekenis voor de clientbrowser. De twee meest voorkomende typen zijn tijdelijke omleidingen en permanente omleidingen.

Tijdelijke omleidingen (responsstatuscode 302 Gevonden) zijn nuttig als een URL tijdelijk vanaf een andere locatie moet worden bediend. Bijvoorbeeld, als u site-onderhoud uitvoert, wilt u mogelijk een tijdelijke omleiding vanaf uw domein naar een uitlegpagina gebruiken om uw bezoekers te informeren dat u binnenkort terug zult zijn.

Permanente omleidingen (responsstatuscode 301 Permanent verplaatst) daarentegen informeren de browser dat deze het oude adres volledig moet vergeten en niet meer moet proberen er toegang toe te krijgen. Deze zijn nuttig wanneer uw inhoud permanent naar een nieuwe locatie is verplaatst, zoals wanneer u domeinnamen wijzigt.

Deze handleiding zal een meer gedetailleerde uitleg geven over hoe elk type omleiding in Nginx te implementeren, en enkele voorbeelden doorlopen voor specifieke gebruiksscenario’s.

Vereisten

Om deze handleiding te volgen, heeft u nodig:

  • A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.

Oplossing in één oogopslag

In Nginx kunt u de meeste redirects realiseren met de ingebouwde rewrite-instructie. Deze instructie is standaard beschikbaar bij een nieuwe Nginx-installatie en kan worden gebruikt om zowel tijdelijke als permanente redirects te maken. In zijn eenvoudigste vorm neemt het minstens twee argumenten aan: de oude URL en de nieuwe URL.

U kunt een tijdelijke redirect implementeren met de volgende regels in uw serverconfiguratie:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/$ http://www.domain2.com redirect;
    . . .
}

Deze redirect geeft de browser opdracht om alle verzoeken voor www.domain1.com door te sturen naar www.domain2.com. Deze oplossing werkt echter alleen voor een enkele pagina, niet voor de hele site. Om meer dan één pagina door te sturen, kunt u de rewrite-instructie met reguliere expressies gebruiken om volledige mappen in plaats van alleen individuele bestanden aan te geven.

redirect komt overeen met reguliere expressiepatronen tussen haakjes. Het verwijst vervolgens naar de overeenkomende tekst in de redirect-bestemming met behulp van de expressie $1, waarbij 1 de eerste groep overeenkomende tekst is. In complexere voorbeelden worden daaropvolgende overeenkomende groepen opeenvolgende nummers gegeven.

Bijvoorbeeld, als u elke pagina tijdelijk wilt doorsturen binnen www.domain1.com naar www.domain2.com, zou u het volgende kunnen gebruiken:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
    . . .
}

server {
    . . .
    server_name www.domain2.com;
    . . .
}

Standaard stelt de rewrite richtlijn een tijdelijke omleiding in. Als u een permanente omleiding wilt maken, kunt u dit doen door redirect te vervangen door permanent aan het einde van de richtlijn, zoals dit:

Permanent redirects
rewrite ^/$ http://www.domain2.com permanent;
rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;

Laten we doorgaan naar enkele specifieke voorbeelden.

Voorbeeld 1 — Verhuizen naar een ander domein

Als u een webaanwezigheid hebt en uw domein naar een nieuw adres wilt wijzigen, is het het beste om uw oude domein niet zomaar achter te laten. Bladwijzers naar uw site en links naar uw site die zich op andere pagina’s op internet bevinden, zullen breken als uw inhoud verdwijnt zonder enige instructies aan de browser over hoe het zijn nieuwe locatie kan vinden. Domeinen wijzigen zonder door te verwijzen zal ertoe leiden dat uw site verkeer verliest van eerdere bezoekers en oudere links.

In dit voorbeeld configureren we een omleiding van het oude domein genaamd domain1.com naar het nieuwe genaamd domain2.com. We zullen hier permanente omleidingen gebruiken omdat het oude domein zal worden afgeschaft en al het verkeer vanaf nu naar het nieuwe domein moet gaan.

Laten we aannemen dat u uw website zo hebt geconfigureerd dat deze wordt geserveerd vanaf een enkel domein genaamd domain1.com, al geconfigureerd in Nginx zoals hieronder:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    . . .
}

We gaan er ook van uit dat u al uw toekomstige versie van de website serveert op domain2.com:

/etc/nginx/sites-available/domain2.com
server {
    . . .
    server_name domain2.com;
    . . .
}

Laten we de configuratie van het serverblok voor domain1.com wijzigen om een permanente redirect naar domain2.com toe te voegen:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    rewrite ^/(.*)$ http://domain2.com/$1 permanent;
    . . .
}

We hebben de bovengenoemde redirect toegevoegd met behulp van een rewrite-instructie. De reguliere expressie ^/(.*)$ komt overeen met alles na de / in de URL. Bijvoorbeeld, http://domain1.com/index.html zal worden doorgestuurd naar http://domain2.com/index.html. Om de permanente redirect te realiseren voegen we eenvoudigweg permanent toe na de rewrite-instructie.

Opmerking: Vergeet niet om je configuratie te testen met nginx -t en vervolgens Nginx opnieuw op te starten nadat je je wijzigingen hebt aangebracht.

Voorbeeld 2 — Het creëren van een Persistente Ervaring Ondanks Wijzigingen in de Paginanamen

Soms is het nodig om de namen van individuele pagina’s te wijzigen die al zijn gepubliceerd en verkeer hebben ontvangen op je site. Alleen de naam wijzigen zou een 404 Niet gevonden fout veroorzaken voor bezoekers die proberen toegang te krijgen tot de oorspronkelijke URL, maar je kunt dit vermijden door een redirect te gebruiken. Hierdoor kunnen mensen die je oude pagina’s hebben gebookmarkt of ze hebben gevonden via verouderde links op zoekmachines nog steeds de juiste pagina bereiken.

Laten we aannemen dat je website twee aparte pagina’s had voor producten en diensten, genaamd products.html en services.html respectievelijk. Nu heb je besloten om die twee pagina’s te vervangen door een enkele aanbiedingspagina genaamd offers.html in plaats daarvan. We zullen een eenvoudige redirect configureren voor products.html en services.html naar offers.html.

We gaan ervan uit dat je website geconfigureerd is als volgt:

Original server block configuration
server {
    . . .
    server_name example.com www.example.com;
    . . .
}

Het configureren van de redirects is zo eenvoudig als het gebruiken van twee redirectinstructies.

Redirects added to the original configuration
server {
    . . .
    server_name example.com www.example.com;
    
    rewrite ^/products.html$ /offer.html permanent;
    rewrite ^/services.html$ /offer.html permanent;
    . . .
}

De rewrite instructie accepteert het oorspronkelijke adres dat moet worden omgeleid, evenals het bestemmingsadres van een nieuwe pagina. Aangezien de verandering hier niet tijdelijk is, hebben we ook permanent in de instructie gebruikt. Je kunt zoveel redirects als deze gebruiken als je wilt om ervoor te zorgen dat je bezoekers geen onnodige 404 Niet gevonden fouten zien bij het verplaatsen van de inhoud van de site.

Conclusie

Je hebt nu de kennis om verzoeken om te leiden naar nieuwe locaties. Zorg ervoor dat je het juiste type redirect gebruikt, aangezien een onjuist gebruik van tijdelijke redirects je zoekranglijst kan schaden.

Er zijn meerdere andere toepassingen van HTTP-redirects, waaronder het afdwingen van beveiligde SSL-verbindingen (d.w.z. het gebruik van https in plaats van http) en ervoor zorgen dat alle bezoekers alleen op het adres met het voorvoegsel www. van de website terechtkomen.

Het correct gebruiken van redirects stelt je in staat om gebruik te maken van je huidige webaanwezigheid, terwijl je tegelijkertijd de mogelijkheid hebt om je sitestructuur aan te passen indien nodig. Als je meer wilt weten over de manieren waarop je bezoekers kunt doorverwijzen, heeft Nginx uitstekende documentatie over het onderwerp in de rewrite module-secties van de officiële documentatie en het officiële blogbericht over het maken van redirects.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-temporary-and-permanent-redirects-with-nginx