Htaccess-redirects
.htaccess-bestanden kun je gebruiken voor redirects. Voorbeelden:
Example: Site migration (2023)
Some lines from a .htaccess file for a site that has been migrated from Drupal to Wordpress
Redirect 301 /catalog/10 /hitachi/ Redirect 301 /catalog/101 /elu/ Redirect 301 /catalog/104 /schaafmessen/ Redirect 301 /catalog/105 /aeg/ Redirect 301 /catalog/109 /ferm/ Redirect 301 /catalog/11 /legna/ Redirect 301 /catalog/110 /holzer/
Example: When Redirect doesn't seem to work (2024.01)
Often, there are a lot of redirects in one .htaccess file. It usually becomes problematic when a rule applies to multiple URLs. The solution to this: Indicate with flag [L]
that if a certain rule applies, that it shouldn't apply anymore other rules. However, you can't do this with Redirect
, but you can use this with RewriteRule
. E.g.:
RewriteEngine On RewriteRule ^shop/hitachi/hitachi-buigapparaat$ https://voorbeeld.nl/hitachi/ [R=301,L] RewriteRule ^shop/hitachi/hitachi-buigapparaat/$ https://voorbeeld.nl/hitachi/ [R=301,L] RewriteRule ^bosch-apparaten/$ https://voorbeeld.nl/bosch/ [R=301,L] RewriteRule ^shop/jungheinrich/jungheinrich-vorkheftruck/$ https://voorbeeld.nl/shop/jungheinrich/ [R=301,L] RewriteRule ^shop/metabo/meuleuse-metabo/$ https://voorbeeld.nl/metabo/ [R=301,L]
or if you like something more pretty:
RewriteEngine On RewriteRule \ ^shop/hitachi/hitachi-buigapparaat$ \ https://voorbeeld.nl/hitachi/ [R=301,L] RewriteRule \ ^shop/hitachi/hitachi-buigapparaat/$ \ https://voorbeeld.nl/hitachi/ [R=301,L] RewriteRule \ ^bosch-apparaten/$ \ https://voorbeeld.nl/bosch/ [R=301,L] RewriteRule \ ^shop/jungheinrich/jungheinrich-vorkheftruck/$ \ https://voorbeeld.nl/shop/jungheinrich/ [R=301,L] RewriteRule \ ^shop/metabo/meuleuse-metabo/$ \ https://voorbeeld.nl/metabo/ [R=301,L]
met 'www' naar zonder 'www'
[1]:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
Eerste regel, RewriteEngine On
: Pak de RewriteEngine erbij! We gaan aan de slag!
De onderdelen van de tweede regel:
%{HTTP_HOST}
is een variabele. In dit geval voor de de host. Dat is hetzelfde als het domein!
is een negatie. Dus niet^
reguliere expressie voor begin van$
reguliere expressie voor eind vanRewriteCond
(keyword): De voorwaarde voor rewrite volgt hierna[NC]
: Hostname is not case-sensitive
Bij elkaar: RewriteCond %{HTTP_HOST} !^www.example.com$
: De voorwaarde voor Rewrite is, dat de host ongelijk is aan www.example.com.
De onderdelen van de derde regel:
.
: een willekeurig teken.*
: 0 of meer herhalingen van willekeurige tekens^(.*)$
: De gevraagde URL (zonder het domein)$1
: Substituut voor eerste wildcard-string op deze regel. Er is maar één wildcard-string (namelijk^(.*)$
). Dus$1
verwijst naar de gevraagde URL (zonder het domein)L
in[L,R=301]
: Dit is het laatste gedeelte voordat de rewrite compleet isR=301
in[L,R=301]
: Return a 301 moved permanently to the web-client.
Bij elkaar: Pak de URL (zonder domein). Plak daar www.example.com/
voor. Verwerk dit, en geef aan dat het een 301-redirect betreft.
Zie ook
Bronnen
- https://my.bluehost.com/hosting/help/htaccess_redirect - Eindelijk een bron die 't snapt