Helsingin kaupunki teki nettisivu-uudistuksen kesällä. Ensimmäiset osat päivitettiin toukokuussa, viimeiset syyskuussa. Uudet sivut sinänsä ovat paremmat kuin aiemmat, mutta samalla rikottiin kaikki vanhat linkit ja sabotoitiin googlen toiminta. Seurauksena kaupungin sivuilta ei löytänyt enää googlella yhtään mitään.

Tämä on aika iso ongelma, koska perinteisesti google on ollut ainoa tapa löytää kaupungin sivuilta yhtään mitään. Navigaation kautta useimpia asioita ei voi löytää kuin ehkä ammattilainen: sivut ovat siihen ihan liian isot.

20.8., kun kesäloman jälkeen aloin taas tarvita kaupungin sivuja enemmän, hermostuin siihen että googlella ei edelleenkään löytänyt mitään. Selvästikään kyse ei ollut vain sivujen muutoksen hetkellisestä häiriöstä. Debuggasin wiresharkilla miksi goole ei toimi ja lähetin kaupungille palautetta:

”Hei, Google-haut kaupungin sivuilta ovat olleet rikki sivu-uudistuksesta alkaen. Ongelma ei ole Googlen, vaan kaupungin sivujen, ja se olisi syytä korjata pikimmiten. Google tarjoaa rikkinäisiä linkkejä, koska kaupungin sivut vastaavat myös vääriin linkkeihin 200 OK, eikä 404 Not Found kuten kuuluisi. Jos tämä korjataan, google siivoaa virheelliset linkit muutamassa päivässä. Google-haku on käytännössä toimivin tapa hakea mitään kaupungin sivuilta. Navigaatio pitkin hierarkiaa on vaikeaa, eikä juuri kukaan tee sitä. Tällä hetkellä kaupungin sivujen tärkein käyttötapa on siis rikki, ollut jo kuukausia.”

Virhe on melko lailla käsittämätön, eikä sitä olisi pitänyt ikinä sattua. 200 OK palauttaminen virhetilanteessa on HTTP-standardin vastaista, eikä siihen ole mitään järkevää perustelua. Sivu-uudistusta tekevien olisi pitänyt ymmärtää sen olevan ongelma, tai vähintäänkin minkäänlaista vastuuta tuntevan toteuttajatahon olisi tullut selittää asiakkaalle, että noin ei pidä toimia.

Ylipäänsä vanhoja linkkejä ei suositusten mukaan pitäisi rikkoa koskaan, jos sama sisältö vaan edelleen on jossain olemassa. Mutta ainakaan google-hakuja ei pitäisi tarkoituksella sabotoida.

Muutamien mailien vaihdon jälkeen 22.9. sain viestin:

Olemme muuttaneet käytäntöämme siten, että jatkossa ohjaamme kävijät viraston vanhoilta sivuilta uusien sivujen etusivulle noin kuukauden ajan. Tämän jälkeen vanhojen sivujen osoitteet palauttavat virhekoodin 404, jolloin Google karsii sivut hakutuloksistaan. Pääsivun osalta tästä ohjauksesta on jo luovuttu. Sivujen uusiminen on kaupungin kannalta suurin viestinnällinen hanke vuosiin. Teemme koko sivuston uusiksi ulkoasun, teknisen toteutuksen ja rakenteen osalta, koska tämä on ainoa keino saada sivut palvelulähtöiseksi ja responsiivisiksi. Tässä yhteydessä on valitettavasti mahdotonta säilyttää vanhoja linkkejä muuttumattomina, koska osa sivuista katoaa kokonaan rakennemuutoksessa.

Nyt lokakuussa google jo toimiikin kaupungin sivuilta hakiessa. Vajaat viisi kuukautta rikkoutumisen jälkeen ja kaksi kuukautta sen jälkeen kun selitin, miten ongelma korjataan.

Vanhat pöytäkirjalinkit sen sijaan eivät toimi edelleenkään. Sekin on iso periaatteellinen ongelma.

Vielä taannoin pöytäkirjoja pidettiin verkossa vain pari vuotta, koska kuntaliiton ohje suosittaa, ettei henkilötietoja pidetä esillä. Se oli todella hankalaa, kun esimerkiksi katusuunnitelmaa hyväksyttäessä liikennesuunnitelma johon se perustui oli jo piilotettu (ei, liikennesuunnitelmissa ei ole kaupunkilaisten henkilötietoja, mutta poistettiin silti).

Sitten kaupunki teetti kalliilla systeemin tägätä henkilötiedot niin, että netissä voidaan pitää versioita ilman niitä, ja vuodesta 2011 alkaen vanhat pöytäkirjat pysyvät verkossa. Paitsi nyt niitä ei sitten löydä, kun kaikki vanhat linkit on rikottu. Kuten jo todettu, linkkejä ei kuuluisi sivu-uudistuksissa rikkoa. Eikä varsinkaan silloin, kun kyse on demokraattisen päätöksenteon julkisuudesta. Esimerkiksi luottamushenkilöiden blogit linkittävät yleensä pöytäkirjoihin, joista päätöksistä kiinnostunut lukija löytä yksityiskohdat. Samaten myös kaupungin projektiblogit.

Tämäkin ongelma on sangen helppo korjata. State of the art -ratkaisu olisi laittaa koko sivuston eteen Nginx-proxy, joka tekee tarvittavat URL-muutokset. Kaupungin omistamalla Lasipalatsin mediakeskuksella esimerkiksi lienee kykyä tehdä tuo parin päivän varotusajalla.

Esimerkiksi yleisten töiden lautakunnan osalta ohjaussääntö näyttäisi nginxissä suunnilleen tältä:

rewrite ^/www.hel.fi/hki/hkr/fi/P__t_ksenteko/Asiakirja\?(.*)$ \ www.hel.fi/www/hkr/fi/paatoksenteko/lautakunta-paatosasiakirjat/asiakirja\?$1 last;

Tai jos ei haluta lisätä yhtään purkkia, vaan tehdä ratkaisu kaupungin käyttämällä IBM WTE:llä, sääntö olisi jotain tämäntapaista:

RewriteMap escapemytext int:escape RewriteRule ^/www.hel.fi/hki/hkr/fi/P__t_ksenteko/Asiakirja\?([a-zA-Z0-9_]*)$ \ /www.hel.fi/www/hkr/fi/paatoksenteko/lautakunta-paatosasiakirjat/asiakirja\?${escapemytext:$1} \ [PT,L]

Näitä sääntöjä tarvitaan yksi per lautakunta, eli parikymmentä samanlaista. Tekisin tuon itse varmaan parissa tunnissa, koska en ole ikinä konffannut WTE:tä. Ammattilaisen pitäisi selvitä nopeammin.

Käytännössä kommunikaatioon pitää varata lisäaikaa, koska sivut on jaettu parinkymmenen eri viraston vastuulle, ja niillä lienee parikymmentä eri vastaavaa. Jonkun pitää siis ensin kirjoittaa ohje, ja välittää se joka paikkaan. Vaikea siihen silti on kovin montaa työpäivää käyttää.

Maanantaina tietotekniikkajaoston kokouksessa esitinkin aiheesta kysymyksen:

”Pyydän kaupunginjohtajaa selvittämään, miten pääsi käymään niin, että kaupungin nettisivujen uudistushanke esti kaupungin sivujen toimivuuden googlella pitkäksi aikaa ja hukkasi kaikki vanhat päätökset sekä mitä ollaan tekemässä, jotta linkit tehtyihin päätöksiin saadaan taas toimimaan.”

Odotan tähän vastausta joulukuun ensimmäisen päivän kokouksessa. Toivottavasti vastaus on, että ongelma on korjattu.

Kirjoittaja on kaupunginhallituksen tietotekniikkajaoston puheenjohtaja eikä ole koskaan tehnyt nettisivuja työkseen. Kaikki tekstissä esitelty konffaus on opeteltu tätä tekstiä varten.