完美解决wordpress伪静态下中文tag无法打开
第一次使用wordpress建站,全部伪静态了,最后发现设置的TAG无法打开(只有中文的无法打开),之前一直都是使用ASP建站,这次也换了下。搜索了下发现是WP对中文的支持问题,也就是说中文的tag无法打开,出现404页面,于是参考了网上N多资料,都试过了发现都不成功,后来结合了伪静态规则和修改源文件支持中文格式的方法才搞定,下面分享下哦:
打开 WP-include/classes.php(3.1之前版本)或WP-include/class-wp.php(3.1+之后版本,下文称新版)
找到第154行(新版为142行),把:
1 |
$pathinfo = $_SERVER['PATH_INFO']; |
替换为:
1 |
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK'); |
找到第159行(新版为147行),把:
1 |
$req_uri = $_SERVER['REQUEST_URI']; |
替换为
1 |
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK'); |
最终代码为:
记得备份哦!
1 2 3 4 5 6 7 8 9 10 |
if ( isset($_SERVER['PATH_INFO']) ) // $pathinfo = $_SERVER['PATH_INFO']; $pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], 'UTF-8', 'GBK'); else $pathinfo = ''; $pathinfo_array = explode('?', $pathinfo); $pathinfo = str_replace("%", "%25", $pathinfo_array[0]); // $req_uri = $_SERVER['REQUEST_URI']; $req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], 'UTF-8', 'GBK'); $req_uri_array = explode('?', $req_uri); |
弄完这些以后接下来就是写规则(httpd.ini)了:RewriteRule /tag(.*) /index.php/?tag$1 [L]
如此便完美解决了所有问题,嘿嘿!希望对大家有所帮助。