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()
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: >MTEntries lastn="800"< redirect permanent /blog/archives/>$MTEntryID pad="1"$>.html >$MTBlogArchiveURL$>>$MTEntryDate format="%Y/%m/%d/%H.%M.%S"$>/ >/MTEntries>
800 er bara þarna inni sem einhver tala sem táknar heildarfjölda færslna fyrir viðkomandi vefdagbók.
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 ;)