空间迁移后,WordPress文章中所有的中文tag页面访问全都报404错误,Google搜索了一下,得知IIS7.5伪静态URL_Rewrite不支持中文,最终在IIS7 WordPress 中文 URL 解决方案博文中找到解决方法,特别感谢原文作者,在此将解决方案再分享一下,希望可以帮到后来的朋友~
在WordPress安装目录下,新建一个“chineseurl.php”文件,内容如下:
4 | if (isset( $_SERVER [ 'HTTP_X_ORIGINAL_URL' ])) { |
5 | $_SERVER [ 'REQUEST_URI' ] = $_SERVER [ 'HTTP_X_ORIGINAL_URL' ]; |
8 | else if (isset( $_SERVER [ 'HTTP_X_REWRITE_URL' ])) { |
9 | $_SERVER [ 'REQUEST_URI' ] = $_SERVER [ 'HTTP_X_REWRITE_URL' ]; |
14 | if ( !isset( $_SERVER [ 'PATH_INFO' ]) && isset( $_SERVER [ 'ORIG_PATH_INFO' ]) ) |
15 | $_SERVER [ 'PATH_INFO' ] = $_SERVER [ 'ORIG_PATH_INFO' ]; |
18 | if ( isset( $_SERVER [ 'PATH_INFO' ]) ) { |
19 | if ( $_SERVER [ 'PATH_INFO' ] == $_SERVER [ 'SCRIPT_NAME' ] ) |
20 | $_SERVER [ 'REQUEST_URI' ] = $_SERVER [ 'PATH_INFO' ]; |
22 | $_SERVER [ 'REQUEST_URI' ] = $_SERVER [ 'SCRIPT_NAME' ] . $_SERVER [ 'PATH_INFO' ]; |
26 | if (isset( $_SERVER [ 'QUERY_STRING' ]) && ! empty ( $_SERVER [ 'QUERY_STRING' ])) { |
27 | $_SERVER [ 'REQUEST_URI' ] .= '?' . $_SERVER [ 'QUERY_STRING' ]; |
然后在web.config中新增一条规则,并将此规则置于规则集合的顶部:
1 | < rule name = "ChineseURL" stopProcessing = "true" > |
2 | < match url = "/(tag|category)/(.*)" /> |
3 | < action type = "Rewrite" url = "chineseurl.php" /> |
效果图如下:
http://xzh.i3geek.com