Htaccess-redirects

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

.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 van
  • RewriteCond (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 is
  • R=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