修复IIS上WordPress固定链接含有中文字符导致的异常

2016年8月1日

像本站用的是Widows 2008和IIS 7。当启用了Wordpress固定链接,打开一篇文章浏览器会提示过多重定向。具体表现为/2016/07/11/%e6%92%a4%e9%94%80github%e4%b8%8a%e7%9a%84%e6%8f%90%e4%ba%a4/重定向到/2016/07/11/%e6%92%a4%e9%94%80github%e4%b8%8a%e7%9a%84%e6%8f%90%e4%ba%a4/?,然后重定向到/2016/07/11/%e6%92%a4%e9%94%80github%e4%b8%8a%e7%9a%84%e6%8f%90%e4%ba%a4/??。即一直加问号。

可能是URL重写出错。要将以下配置添加到web.config的configuration/system.webServer/rewrite/rules节。

<rule name="WordPress: https://gqqnbig.me" patternSyntax="Wildcard" stopProcessing="true">
	<match url="*" />
		<conditions>
			<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
			<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
		</conditions>
	<action type="Rewrite" url="index.php" />
</rule>

然后还有另一个问题,就是标题是ASCII字符的文章可以正确打开,标题含有Unicode的文章不能正确定位。按照《How to use Unicode in WordPress slugs (Urls) on Windows 2008 / 2012 (IIS 7 & 8)》,需要在命令提示符运行

reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
PATH_INFO

最后重启IIS就可以啦!!