我正在使用wordpress这种永久链接:
/%年%/%monthnum%/%postname%/
如果我使用这种类型的网址: example.com/2010/03/तकनीक
它将此url视为此example.com/2010/03/(通过忽略unicode字符) 并显示2010年3月的档案清单。
如果我使用英文网址: example.com/2010/03/technology 然后它完美地运作。
即使在代码页上也会出现此问题: 例如example.com/tag/इंटरनेट被视为example.com/tag/并显示404页面。
为什么wordpress忽略了unicode字符?
如果我使用默认的查询字符串结构,那么即使使用unicode字符也能正常工作。
服务器信息: IIS7 Win2008服务器(启用了Url重写) Wordpress 2.9.2
答案 0 :(得分:10)
有关问题的概述,请查看:
http://ruslany.net/2010/03/important-update-for-iis-7-0-fastcgi-module/
这指的是你现在过时了:
http://ruslany.net/2010/02/fastcgi-module-differences-across-iis-versions/
我自己的情况是通过应用Win 7 SP1修复的,但有趣的是,我仍然没有应用修补程序中描述的注册表黑客:
答案 1 :(得分:4)
我在本地计算机上运行WAMP服务器。我在我的IIS7 Web服务器上测试了$ _SERVER ['PATH_INFO']并发现它有一些unicode问题。 Wordpress使用path_info来处理网址。 我用以下代码创建了一个文件test.php:
如果我要求http://example.com/test.php/कुछशब्द/कुछऔरशब्द/english
然后我得到了这个输出
---- ---- ****
/ ??????? / ????????? /英 ---- **** ---- path_info正在将unicode hindi chars转换为?????。 这意味着我的服务器中的path_info变量存在一些问题。 您知道任何可能导致此类问题的IIS7设置吗?
相同的代码在我的本地Apache Windows服务器上运行良好。
答案 2 :(得分:1)
KB article提供的修补程序对我的Windows版本和/或使用开始>的代码无效。在 Windows 7旗舰版和IIS 7.5.7600
中运行也没有效果,并且由于某种原因没有添加注册表项reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
我必须做以下选择之一:
1)添加Reg。通过添加新的多字符串值>>手动在HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ w3svc \ Parameters下手动 值名称:FastCGIUtf8ServerVariables 价值数据(两行): REQUEST_URI PATH_INFO
2)以管理员身份使用cmd.exe执行代码然后粘贴代码并执行
在上述步骤之后,请记住在cmd.exe上以管理员身份执行iisreset命令。