长久以来博客的中文标签都是404,原因是IIS会脑残地把传入的UTF8路径转成ASCII,在2003中文系统下也就是GBK。
Google到的方法多数是修改wordpress的代码,加入一行把PATH_INFO转回UTF8的代码。很显然这是很不靠谱的hackfix,治标不治本,因为本来就不是网站的错。
进一步查询发现FastCGI 1.5已经修复了这个问题,但是需要修改注册表以开启这个功能。方法是在注册表添加FastCGIUtf8ServerVariables键值使REQUEST_URI和PATH_INFO以UTF8编码传送给PHP:
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
然后重启IIS,问题解决。