Nachdem die Migration zu Hugo sehr erfolgreich verlaufen ist, wurden auch Einstellungen in der Nginx-Konfiguration notwendig.
Nicht mehr vorhandene Seiten
Nicht mehr vorhandene Seiten müssen Suchmaschinen mitgeteilt werden. Dadurch wissen die Suchmaschinen, dass die Seite nicht nur temporär nicht gefunden werden kann, sondern permanent entfernt wurde. Mit Nginx setze ich dazu mit einer Map eine Variable, welche in der nachfolgenden Nginx-Konfiguration abgefragt wird um den Code HTTP-Statuscode 410 (gone) zurückzusenden. In der Map sind alle nicht mehr verfügbaren Pfade eingetragen.
map $uri $gone {
default 0;
^/pfad-einer-nicht-mehr-vorhandenen-seite/ 1;
^/pfad-noch-einer-nicht-mehr-vorhandenen-seite/ 1;
...
}
Zu beachten ist, dass die Map außerhalb des Server-Contextes und innerhalb des HTTP-Contextes in Nginx stehen muss. Im jeweiligen Server-Block kann dann der Wert der Variablen $gone
abgefragt werden.
if ($gone) {
return 410;
}
Umschreiben von WordPress- auf Hugo-Pfade
WordPress verwendet für die RSS-Feeds den Pfad /feed/
, Hugo verwendet dafür /index.xml
. Mit Hilfe von Nginx und einer Rewrite-Regel wird Besuchern mitgeteilt, dass sich der Pfad permanent geändert hat.
rewrite ^/feed/$ /index.xml permanent;
Stichworte wurden bei mir in WordPress unter der URL /tag/
angelegt. Der von mir verwendete wordpress-to-hugo-exporter machte aus den Stichworten dann allerdings daraus eine Taxononomie /tags/
, welche ebefalls umgeschrieben werden musste.
rewrite ^/tag/(.*) /tags/$1 permanent;
Einstellen der “Nicht gefunden”-Seite
Das von mir verwendete Hugo-Theme bringt eine eigene “Nicht gefunden”-Seite mit. Diese muss natürlich auch Nginx bekannt gegeben werden.
error_page 404 /404.html;
Sitemaps
Die Sitemaps habe ich nicht per Rewrite-Regel in Nginx umgeschrieben sondern direkt den neuen Pfad in den jeweiligen Verwaltungswebseiten der Suchmachinen eingetragen.
Entferntes
Zusätzlich konnte ich viel Konfiguration betreffend PHP oder dem von mir verwendeten WordPress-Cache-Plugin entfernen. Nun sieht nicht nur die Webseite sondern auch die Konfiguration aufgeräumter aus.