Utilia

.htaccess-redirectgenerator

Genereer 301- en 302-redirects voor .htaccess of Nginx, dwing HTTPS en www af, verhuis een domein en regel de slash, met controle op lussen en ketens.

Server
Type redirect
Canoniek adres
Slash aan het einde
Het hele domein verhuizen

Maak eerst een back-up van je huidige configuratie en test met 302 voordat je overstapt op 301: browsers onthouden permanente redirects.

Controles

Zo gebruik je de .htaccess-redirectgenerator

  1. Kies je Server: Apache (.htaccess) of Nginx, en daarna het Type redirect: 301 – permanent of 302 – tijdelijk.
  2. Schrijf bij Paginaredirects één redirect per regel: het oude pad, een spatie en dan de nieuwe URL, bijvoorbeeld /oude-pagina.html /nieuwe-pagina/. Een tab, een komma of -> werkt ook, en je kunt volledige oude URL’s of bestaande regels als Redirect 301 /a /b plakken.
  3. Vul eventueel Je domein in (bijvoorbeeld example.com), zodat paginaredirects direct naar het uiteindelijke adres verwijzen.
  4. Vink onder Canoniek adres HTTPS afdwingen aan en kies www afdwingen, www verwijderen of www laten zoals het is. Kies onder Slash aan het einde of je die wilt toevoegen of verwijderen.
  5. Is de hele site verhuisd? Vul dan bij Het hele domein verhuizen het Oud domein en het Nieuw adres in, en laat Pad behouden aangevinkt zodat elke pagina op haar tegenhanger uitkomt.
  6. Lees de Controles en klik op Kopiëren of Downloaden. Met Voorbeeld laden zie je een complete configuratie.

Hoe de gegenereerde regels werken

Voor Apache schrijft de tool mod_rewrite-regels, beginnend met één RewriteEngine On. Elke pagina wordt een RewriteRule waarvan het patroon begint met ^/?, zodat het zowel in een .htaccess-bestand werkt (waar de eerste slash wordt weggehaald) als in een <VirtualHost>-blok. Punten, haakjes, plustekens en andere tekens met een betekenis in reguliere expressies worden in je paden ge-escaped, en een spatie wordt \x20. In de nieuwe URL worden $ en % ge-escaped, omdat Apache ze als terugverwijzingen zou lezen, en de vlag NE voorkomt dat Apache de URL nog een keer codeert.

Een RewriteRule ziet de querystring nooit. Bevat een oud adres er een, zoals /product.php?id=42, dan voegt de tool een regel RewriteCond %{QUERY_STRING} ^id=42$ en de vlag QSD toe, zodat de oude parameters vervallen in plaats van naar de nieuwe pagina te worden gekopieerd.

De regels staan in een volgorde die onnodige tussenstappen voorkomt: eerst de domeinverhuizing, dan de paginaredirects, dan de slash aan het einde en ten slotte HTTPS en www. HTTPS en www worden door één regel afgehandeld, dus http://www.example.com gaat in één redirect naar https://example.com. Als je domein bekend is, verwijzen pagina- en slashredirects al direct naar het uiteindelijke HTTPS-adres.

Voor Nginx worden HTTPS, www en domeinverhuizingen aparte server-blokken met return 301, en paginaredirects worden rewrite-regels die je in je hoofdblok server plakt. Ze worden uitgevoerd vóór de location-matching, en gaan dus ook voor op de slashregel. Een ? aan het einde van een doel voorkomt dat Nginx de oude querystring toevoegt waar dat niet hoort.

Uitgevoerde controles

  • Een pagina die naar zichzelf doorstuurt, of twee pagina’s die naar elkaar doorsturen (een lus die eindigt in “te veel omleidingen”).
  • Ketens zoals A → B → C: laat A direct naar C verwijzen, want elke extra stap maakt het trager voor bezoekers en verspilt crawlbudget.
  • Hetzelfde oude adres dat twee keer voorkomt, waarbij alleen de eerste regel zou gelden.
  • Een doel dat geen absolute URL is en geen pad dat met / begint, of een doel met http:// of de verkeerde www-variant op je eigen domein.
  • Een slashinstelling die een doel nog een keer zou doorsturen of terug naar de bron zou sturen.

Veelgestelde vragen

Gebruik ik 301 of 302?

Gebruik 301 als de verhuizing permanent is: zoekmachines dragen de signalen van de oude pagina over naar de nieuwe en werken hun index bij. Gebruik 302 voor tijdelijke wijzigingen zoals onderhoud of een korte campagne. Browsers onthouden 301-redirects, dus test eerst met 302.

Waar zet ik het .htaccess-bestand?

In de hoofdmap van de site (vaak public_html of www), naast index.php of index.html. De download heet htaccess.txt; hernoem hem naar .htaccess, of plak de regels bovenaan je bestaande bestand. Bewaar een back-up van het origineel.

Waarom RewriteRule in plaats van Redirect 301?

Regels met Redirect komen uit mod_alias en worden in een andere fase uitgevoerd dan RewriteRule. Als je beide in één bestand mengt, is de volgorde moeilijk te voorspellen. Door alleen mod_rewrite te gebruiken staat elke regel in één voorspelbare volgorde en kun je ook querystrings matchen.

Mijn site toont “te veel omleidingen” na het afdwingen van HTTPS. Waarom?

Achter een load balancer, CDN of proxy die HTTPS afhandelt, ziet Apache elk verzoek als gewone HTTP, dus %{HTTPS} staat altijd uit. Test in dat geval de doorgestuurde header, bijvoorbeeld RewriteCond %{HTTP:X-Forwarded-Proto} !https, of zet de redirect aan in het CDN.

Verandert deze tool iets aan mijn server?

Nee. Hij genereert alleen tekst in je browser. Er wordt niets verstuurd, en jij bepaalt waar en hoe de regels worden geïnstalleerd.