From 1e7fd527d6599b22900e3094a99c99547d9d3e26 Mon Sep 17 00:00:00 2001 From: MacRat Date: Tue, 16 Jan 2024 20:37:22 +0900 Subject: [PATCH] chore(SEO): add redirections from old URL to new URL --- vercel.json | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 1 deletion(-) diff --git a/vercel.json b/vercel.json index 277df869..1d837a0a 100644 --- a/vercel.json +++ b/vercel.json @@ -1,4 +1,149 @@ { "outputDirectory": "dist", - "trailingSlash": false + "trailingSlash": false, + "redirects": [ + {"source": "/about.html", "destination": "/about"}, + {"source": "/blog/(20[0-9]{2})/(1[0-2]|0[0-9])/(.+)\\.html", "destination": "/blog/$1/$2/$3"}, + {"source": "/blog/(20[0-9]{2})/(1[0-2]|0[0-9])/(.+)\\.amp", "destination": "/blog/$1/$2/$3"}, + {"source": "/blog/1212061454.html", "destination": "/blog/2012/12/test-a"}, + {"source": "/blog/1212061455.html", "destination": "/blog/2012/12/test-b"}, + {"source": "/blog/1212061528.html", "destination": "/blog/2012/12/test-c"}, + {"source": "/blog/1212061545.html", "destination": "/blog/2012/12/test-d"}, + {"source": "/blog/1212061548.html", "destination": "/blog/2012/12/test-e"}, + {"source": "/blog/1212061553.html", "destination": "/blog/2012/12/test-f"}, + {"source": "/blog/1212061628.html", "destination": "/blog/2012/12/test-g"}, + {"source": "/blog/1212061633.html", "destination": "/blog/2012/12/test-h"}, + {"source": "/blog/1212061641.html", "destination": "/blog/2012/12/test-i"}, + {"source": "/blog/1212061653.html", "destination": "/blog/2012/12/test-j"}, + {"source": "/blog/1212062127.html", "destination": "/blog/2012/12/test-k"}, + {"source": "/blog/1212062143.html", "destination": "/blog/2012/12/test-l"}, + {"source": "/blog/1212062153.html", "destination": "/blog/2012/12/test-m"}, + {"source": "/blog/1212081657.html", "destination": "/blog/2012/12/test-n"}, + {"source": "/blog/1212081723.html", "destination": "/blog/2012/12/test-o"}, + {"source": "/blog/1212081804.html", "destination": "/blog/2012/12/test-p"}, + {"source": "/blog/1212082248.html", "destination": "/blog/2012/12/test-q"}, + {"source": "/blog/1212082314.html", "destination": "/blog/2012/12/test-r"}, + {"source": "/blog/1212090005.html", "destination": "/blog/2012/12/test-s"}, + {"source": "/blog/1212152224.html", "destination": "/blog/2012/12/test-t"}, + {"source": "/blog/1212152319.html", "destination": "/blog/2012/12/test-u"}, + {"source": "/blog/1212171722.html", "destination": "/blog/2012/12/test-v"}, + {"source": "/blog/1212171757.html", "destination": "/blog/2012/12/test-w"}, + {"source": "/blog/1212242207.html", "destination": "/blog/2012/12/test-x"}, + {"source": "/blog/1212302047.html", "destination": "/blog/2012/12/star-updated"}, + {"source": "/blog/1301010000.html", "destination": "/blog/2013/01/new-year"}, + {"source": "/blog/1301021816.html", "destination": "/blog/2013/01/python-thread-kill"}, + {"source": "/blog/1301030114.html", "destination": "/blog/2013/01/kill-parent-in-c-lang"}, + {"source": "/blog/1301041851.html", "destination": "/blog/2013/01/toppage-desgin-change"}, + {"source": "/blog/1301042053.html", "destination": "/blog/2013/01/kill-parent-in-python"}, + {"source": "/blog/1301060215.html", "destination": "/blog/2013/01/cyrillic"}, + {"source": "/blog/1301080247.html", "destination": "/blog/2013/01/python-usage"}, + {"source": "/blog/1301100224.html", "destination": "/blog/2013/01/site-search"}, + {"source": "/blog/1301102154.html", "destination": "/blog/2013/01/python-cgi-cant-import"}, + {"source": "/blog/1301110410.html", "destination": "/blog/2013/01/support-feed"}, + {"source": "/blog/1301112235.html", "destination": "/blog/2013/01/support-social"}, + {"source": "/blog/1301170048.html", "destination": "/blog/2013/01/python-progressbar"}, + {"source": "/blog/1301221739.html", "destination": "/blog/2013/01/gentoo-bootchart2"}, + {"source": "/blog/1301240251.html", "destination": "/blog/2013/01/learning-dmenu"}, + {"source": "/blog/1301262337.html", "destination": "/blog/2013/01/python-yahoo-api"}, + {"source": "/blog/1301270139.html", "destination": "/blog/2013/01/gentoo-config_devtmpfs"}, + {"source": "/blog/1301301328.html", "destination": "/blog/2013/01/use-c-library-by-python"}, + {"source": "/blog/1302050247.html", "destination": "/blog/2013/02/gentoo-access_violation_summary"}, + {"source": "/blog/1302070356.html", "destination": "/blog/2013/02/anti-virus-soft-mse"}, + {"source": "/blog/1302152110.html", "destination": "/blog/2013/02/c-lang-for_i_in"}, + {"source": "/blog/1302160201.html", "destination": "/blog/2013/02/usage-sqlite3"}, + {"source": "/blog/1302182055.html", "destination": "/blog/2013/02/gentoo-slim"}, + {"source": "/blog/1302251950.html", "destination": "/blog/2013/02/use-tor-windows"}, + {"source": "/blog/1302271933.html", "destination": "/blog/2013/02/use-tor-gentoo"}, + {"source": "/blog/1302272226.html", "destination": "/blog/2013/02/startx-timeout_in_locking"}, + {"source": "/blog/1302282101.html", "destination": "/blog/2013/02/use-tor-python"}, + {"source": "/blog/1303070041.html", "destination": "/blog/2013/03/dirty-python"}, + {"source": "/blog/1303150214.html", "destination": "/blog/2013/03/scheme-circle-ratio"}, + {"source": "/blog/1303220147.html", "destination": "/blog/2013/03/python-inotify"}, + {"source": "/blog/1303270114.html", "destination": "/blog/2013/03/gentoo-ntp"}, + {"source": "/blog/1303272102.html", "destination": "/blog/2013/03/apache-url-normalization"}, + {"source": "/blog/1303310215.html", "destination": "/blog/2013/03/flask-content_range"}, + {"source": "/blog/1304032311.html", "destination": "/blog/2013/04/python-woosh"}, + {"source": "/blog/1304102205.html", "destination": "/blog/2013/04/ethernet-header"}, + {"source": "/blog/1304130057.html", "destination": "/blog/2013/04/structure-in-memory"}, + {"source": "/blog/1304161426.html", "destination": "/blog/2013/04/python-decorator"}, + {"source": "/blog/1304191638.html", "destination": "/blog/2013/04/unicode-usc-utf"}, + {"source": "/blog/1304250055.html", "destination": "/blog/2013/04/search-in-site"}, + {"source": "/blog/1304251733.html", "destination": "/blog/2013/04/scheme-tcp"}, + {"source": "/blog/1304261755.html", "destination": "/blog/2013/04/python-crypto-aes"}, + {"source": "/blog/1304280048.html", "destination": "/blog/2013/04/next-star"}, + {"source": "/blog/1304280225.html", "destination": "/blog/2013/04/what-is-uint16"}, + {"source": "/blog/1304300158.html", "destination": "/blog/2013/04/what-is-genetic-algorithm"}, + {"source": "/blog/1305010105.html", "destination": "/blog/2013/05/python-pyevolve"}, + {"source": "/blog/1305021319.html", "destination": "/blog/2013/05/python-dbm"}, + {"source": "/blog/1305030209.html", "destination": "/blog/2013/05/python-conditional-operator"}, + {"source": "/blog/1305040319.html", "destination": "/blog/2013/05/python-character-reference"}, + {"source": "/blog/1305072348.html", "destination": "/blog/2013/05/use-python-by-c-lang"}, + {"source": "/blog/1305171351.html", "destination": "/blog/2013/05/python-import-from-web"}, + {"source": "/blog/1305171431.html", "destination": "/blog/2013/05/python-template"}, + {"source": "/blog/1305232159.html", "destination": "/blog/2013/05/python-doctest"}, + {"source": "/blog/1306022226.html", "destination": "/blog/2013/06/python-set-variable-in-lambda"}, + {"source": "/blog/1306052350.html", "destination": "/blog/2013/06/rfid"}, + {"source": "/blog/1306062142.html", "destination": "/blog/2013/06/mecab-misunderstand-symbol"}, + {"source": "/blog/1306070103.html", "destination": "/blog/2013/06/new-function-keywords"}, + {"source": "/blog/1306081916.html", "destination": "/blog/2013/06/python-tail-recurusion"}, + {"source": "/blog/1306092149.html", "destination": "/blog/2013/06/the-best-security-soft"}, + {"source": "/blog/1306172023.html", "destination": "/blog/2013/06/python-generator-like-list-comprehension"}, + {"source": "/blog/1306241733.html", "destination": "/blog/2013/06/python-different-equal-and-is"}, + {"source": "/blog/1307090215.html", "destination": "/blog/2013/07/zfs-deduplication"}, + {"source": "/blog/1307110142.html", "destination": "/blog/2013/07/zfs-data-compress"}, + {"source": "/blog/1307211202.html", "destination": "/blog/2013/07/different-of-cat5-and-cat6"}, + {"source": "/blog/1307302249.html", "destination": "/blog/2013/07/python-max-min"}, + {"source": "/blog/1308080254.html", "destination": "/blog/2013/08/new-function-syntax-hilight"}, + {"source": "/blog/1308082352.html", "destination": "/blog/2013/08/script-of-what-is-language"}, + {"source": "/blog/1308230101.html", "destination": "/blog/2013/08/ethernet-header-for-python"}, + {"source": "/blog/1308262312.html", "destination": "/blog/2013/08/python-beep"}, + {"source": "/blog/1308312306.html", "destination": "/blog/2013/08/python-class-bool"}, + {"source": "/blog/1309032047.html", "destination": "/blog/2013/09/windows-pil-importerror"}, + {"source": "/blog/1309042054.html", "destination": "/blog/2013/09/c-language-beep"}, + {"source": "/blog/1309060109.html", "destination": "/blog/2013/09/python-list-comprehension"}, + {"source": "/blog/1309060217.html", "destination": "/blog/2013/09/shellscript-epoch-time"}, + {"source": "/blog/1309150042.html", "destination": "/blog/2013/09/python-try-why-can-catch-child-classes"}, + {"source": "/blog/1309220039.html", "destination": "/blog/2013/09/python-xml-rpc"}, + {"source": "/blog/1309240015.html", "destination": "/blog/2013/09/wallpaper-for-my-friend"}, + {"source": "/blog/1310012317.html", "destination": "/blog/2013/10/what-is-http-connect-request"}, + {"source": "/blog/1310071618.html", "destination": "/blog/2013/10/python-check-is-string"}, + {"source": "/blog/1310082152.html", "destination": "/blog/2013/10/python-sequence-methods"}, + {"source": "/blog/1310162157.html", "destination": "/blog/2013/10/python-modular-exponentiation"}, + {"source": "/blog/1310230027.html", "destination": "/blog/2013/10/http-request-www-google-com-tw"}, + {"source": "/blog/1310232347.html", "destination": "/blog/2013/10/make-mailserver-with-python"}, + {"source": "/blog/1310241744.html", "destination": "/blog/2013/10/python-ascii-or-iso2022"}, + {"source": "/blog/1311062232.html", "destination": "/blog/2013/11/ipad-background-attachment"}, + {"source": "/blog/1311082201.html", "destination": "/blog/2013/11/python-exif-with-pil"}, + {"source": "/blog/1311112222.html", "destination": "/blog/2013/11/shellscript-csv"}, + {"source": "/blog/1311142032.html", "destination": "/blog/2013/11/awesome-with-mouse"}, + {"source": "/blog/1311260307.html", "destination": "/blog/2013/11/usage-rcs"}, + {"source": "/blog/1312252257.html", "destination": "/blog/2013/12/apache-domain-change"}, + {"source": "/blog/1401010000.html", "destination": "/blog/2014/01/new-year"}, + {"source": "/blog/1401031947.html", "destination": "/blog/2014/01/apache-path-last-slash"}, + {"source": "/blog/1401100000.html", "destination": "/blog/2014/01/apache-force-ssl"}, + {"source": "/blog/1401102358.html", "destination": "/blog/2014/01/tkinter-remove-lavel-image"}, + {"source": "/blog/1401150158.html", "destination": "/blog/2014/01/pil-encoder_error_-2"}, + {"source": "/blog/1401190136.html", "destination": "/blog/2014/01/python-roman-numeral"}, + {"source": "/blog/1402032256.html", "destination": "/blog/2014/02/pil-make-thumbnail"}, + {"source": "/blog/1402050156.html", "destination": "/blog/2014/02/python-pyexiv2"}, + {"source": "/blog/1402080008.html", "destination": "/blog/2014/02/pyexiv2-transplant-to-gentoo"}, + {"source": "/blog/1402110316.html", "destination": "/blog/2014/02/apache-directory-slash"}, + {"source": "/blog/1402111811.html", "destination": "/blog/2014/02/jinja2-macro"}, + {"source": "/blog/1402132136.html", "destination": "/blog/2014/02/usage-vimdiff"}, + {"source": "/blog/1402182219.html", "destination": "/blog/2014/02/mdadm-raid5"}, + {"source": "/blog/1402242058.html", "destination": "/blog/2014/02/apache-deny-by-ua"}, + {"source": "/blog/1402281635.html", "destination": "/blog/2014/02/atag-google-plus-link"}, + {"source": "/blog/1403010037.html", "destination": "/blog/2014/03/atag-hatena-bookmark-link"}, + {"source": "/blog/1403012325.html", "destination": "/blog/2014/03/google-plus-do-email-address-leakage"}, + {"source": "/blog/1403020127.html", "destination": "/blog/2014/03/what-is-the-sahen"}, + {"source": "/blog/1403022122.html", "destination": "/blog/2014/03/google-plus-do-email-address-leakage-sequel"}, + {"source": "/blog/1403032118.html", "destination": "/blog/2014/03/python-max-min"}, + {"source": "/blog/1403062312.html", "destination": "/blog/2014/03/nginx-erropage"}, + {"source": "/blog/1403070045.html", "destination": "/blog/2014/03/uwsgi-python-unrecognized-option"}, + {"source": "/blog/1403120057.html", "destination": "/blog/2014/03/python-getattr-getattribute"}, + {"source": "/blog/1403122341.html", "destination": "/blog/2014/03/python-setattr"}, + {"source": "/blog/1403131840.html", "destination": "/blog/2014/03/python-timeit"}, + {"source": "/blog/1403170107.html", "destination": "/blog/2014/03/python3-lru_cache"}, + {"source": "/blog/2015/11/java-charactor-count", "destination": "/blog/2015/11/java-character-count"} + ] }