Örvitinn

Dagbókarfikt - slóðir endurbættar

Er að vinna í því að breyta slóðunum á þessari síðu samkvæmt uppskrift Más. Er búinn með megnið af þessu, á eftir að skoða trackback og fegurri slóðir á athugasemdir. Ég ákvað að það væri nóg að hafa þetta nákvæmt upp á mínútu, ólíklegt að ég eigi eftir að/geti póstað tvisvar á sömu mínútunni. Sérstaklega ekki meðan serverinn keyrir á þessari dollu.

Eyddi öllum gömlu skránum og skrifaði python forrit til að vísa gestum áfram. Apache sér um að keyra forritið í hvert sinn sem 404 (skrá fannst ekki) villa kemur upp. Forritið tékkar á því hvort verið er að leita að skrá í minni dagbók, ef svo er reynir það að lesa gamla indexinn (töluhlutann úr urlinu, 000659.html verður 659) flettir svo upp í gagnagrunninum sem geymir dagbókina, sækir dagsetninguna og býr til slóð til að vísa á úr þeirri dagsetningu.

Þetta litla forrit virðist virka ágætlega! Einhver tilvik virka ekki fyrir mig, þessi slóð virðist t.d. ekki komast í gegn, á að vísa hingað. Skriftið er hérna fyrir neðan, ef þú sérð hvað er að máttu endilega setja inn athugasemd, þetta blasir eflaust við öllum öðrum en mér!
08:50
Þetta blasti við mér um leið og ég kíkti á þetta núna, búinn að laga. Best að segja ekkert frá villunni :-P

Einnig átti ég örlítið við dirify fallið í Util.pm til að Ý, æ, ö yrðu að Y, ae og o svo category slóðirnar séu læsilegar.

Endilega látið mig vita ef eitthvað er virkar ekki á síðunni.

Hér er python scriptið, eflaust má gera þetta miklu betur - en þetta dugar..næstum því.


URL = "http://www.orvitinn.com"

def get_url_from_date(d):
    # taka dagsetningarstreng á ákv. formi og skila 
    #urli: URL/year/month/day/hour.min/
    year = d[0:4]
    month = d[5:7]
    day = d[8:10]
    hour = d[11:13]
    min = d[14:16]
    return "%s/%s/%s/%s/%s.%s/"%(URL, year, month, day, hour, min)

def get_id(u):
    # reyna að finna töluna í slóða á forminu /bla/000111.html
    # ef ekki tala klikkar int() og exception er kastað
    # exception alltaf kastað ef urlið er ekki "rétt".
    # galli - /12.html == 000012.html en það skiptir ekki máli!
    dot = u.find(".")
    slash = u.rfind("/")
    if slash == -1:
        return u[0:dot]
    return int(u[slash+1:dot])

def main():
    try:
        if os.environ.has_key("REDIRECT_URL"):
            url = os.environ["REDIRECT_URL"]
            id = get_id(url)
            SQL = "select entry_created_on from mt_entry where entry_id =%d"%id
            db = MySQLdb.Connect(db="***", user="***", passwd="***")
            c = db.cursor()
            c.execute(SQL)
            result = c.fetchall()
            d = result[0][0]
            url = get_url_from_date(d)
            print "Status: 301 Moved Permanently"
            print "Location: %s"%url
            print
            return
    except:
        pass

    # skila bara 404 fyrir allt sem klikkar - það er hvort
    #sem er það sem hefði annars gerst.
    # todo: redirecta á static 404 síðu, ekki prenta hana hér út.
    print "Content-type:text/html"
    print "Status: 404 Not Found"
    print
    print "<html>"
    print "<head>"
    print "<title>404 síða fannst ekki</title>"
    print "</head>"
    print "<body>"
    print "<p>Því miður finnst síðan sem þú varst að leita að ekki hér<br />"
    print r'Kíktu á forsíðuna <a href="http://www.orvitinn.com"> og athugaðu hvort þú finnir eitthvað áhugavert þar</p></a>'
    print "</body>"
    print "</html>"


if __name__ == "__main__":
    main()

movable type
Athugasemdir

Tryggvi R. Jónsson - 19/12/03 09:20 #

Einfalda leiðin til að taka gömlu slóðirnar (archives/nnnnnn.html) yfir í nýjar er að láta MT búa til redirect og setja það svo inn í .htaccess eða httpd.conf fyrir Apache ef þú hefur aðgang að því. Hér er dæmi: &gtMTEntries lastn="800"&lt redirect permanent /blog/archives/&gt$MTEntryID pad="1"$&gt.html &gt$MTBlogArchiveURL$>&gt$MTEntryDate format="%Y/%m/%d/%H.%M.%S"$&gt/ &gt/MTEntries&gt

800 er bara þarna inni sem einhver tala sem táknar heildarfjölda færslna fyrir viðkomandi vefdagbók.

Matti Á. - 19/12/03 09:43 #

Ég vildi losna við að hafa þúsund skrár í rótinni á vefsvæðinu, þannig að mér þótti þessi lausn skemmtileg - og hún virkar :-)

Tryggvi R. Jónsson - 19/12/03 12:59 #

Það verða ekki til neinar skrár í vefrótinni í redirect leiðinni heldur. Þetta líka hjálpar ,,snjöllum" skriðkvikindum að finna nýju síðurnar með því að senda "moved permenantly" error kóða. There's more than one way to skin a cat las ég einhversstaðar ;)

Matti Á. - 19/12/03 13:10 #

Jamm, það er rétt, þarna verða ekki til skrár. En það verða aftur á móti til vel rúmlega þúsund línur í annað hvort .htaccess eða apachce config skránni og mér finnst það sóðalegt :-)

En vissulega eru til margar leiðir.