Skip to content
This repository has been archived by the owner on Jan 7, 2019. It is now read-only.

Neue Attachment URLs und Redirects

marians edited this page Apr 5, 2013 · 2 revisions

Nach der Umstellung des Kölner Ratsinformationssystems (RIS) im April 2013 ändern sich die Daten, die zu Dateianhängen vorliegen. Insbesondere ist die numerische ID, mit der vorher Dateianhänge eindeutig gekennzeichnet wurden, nicht mehr verfügbar.

Bislang wurden die URLs für Dateianhänge auf Basis dieser numerischen ID gebildet. Ein Beispiel:

http://offeneskoeln.de/attachments/4/0/pdf227504.pdf

Der Dateiname besteht aus der numerischen ID zusammen mit der Dateityp-Kennung "pdf". Der Pfad "/4/0/" wird aus den letzten beiden Ziffern der numerischen ID, in umgekehrter Reihenfolge, gebildet.

Diese URLs sind in Suchmaschinen bekannt und werden von vielen Seiten verlinkt. Daher ist es im Sinne der Nutzerfreundlichkeit entscheidend, dass die URLs nach der Umstellung auf das neue System nicht ins Leere laufen.

Mapping von Attachments vorher/nachher

Sobald das RIS umgestellt wurde, können die Attachments erneut gescraped werden. Dabei wird auch wieder die SHA1-Prüfsumme ermittelt, die bereits für alle Attachments in der alten Datenbank steht.

Anhand der SHA1-Prüfsumme sollte es möglich sein, die meisten Dateien, die bisher existierten, ihrem neuen Datenbankeintrag zuzuweisen.

Die Liste der alten numerischen IDs zusammen mit den SHA-Prüfsummen und ggf. den Attachment-IDs im neuen System sollte als Mapping-Tabelle in der Datenbank angelegt werden.

HTTP Redirects

Anfragen auf die veralteten URLs sollen von einem Stichtag an mit einem HTTP 301 Redirect beantwortet werden. Dabei wird die neue, absolute Download-URL mitgegeben.

Zum Ermitteln der neuen URL muss die alte numerische ID in der Attachment-Datenbank hinterlegt sein.

Download

Anders als bisher werden die Attachments nicht mehr als Dateien aus dem Dateisystem ausgeliefert, sondern per Flask Webapp aus der Datenbank gelesen und gesendet. Hierbei sind wichtige Header wie "If-modified-since" zu berücksichtigen.