Solução perfeita para reescrita de URL e implementação de URLs estáticas do WordPress em hospedagem IIS
Primeiro, você precisa que seu provedor de hospedagem suporte páginas de erro personalizadas. Em seguida, crie um arquivo 404.php no formato UTF-8 com o seguinte código:
<?phpheader("HTTP/1.1 200 OK");$ori_qs = strtolower($_SERVER['QUERY_STRING']);$pattern = '/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i';
preg_match($pattern, $ori_qs, $matches);$_SERVER['PATH_INFO'] = $matches[1] . '?' . $matches[2];$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];$query_args = explode('&', $matches[2]);unset($_GET);foreach ($query_args as $arg){$the_arg = explode('=', $arg);$_GET[$the_arg[0]] = $the_arg[1];}
include('index.php');?>Depois de criar, faça o upload para o diretório raiz do site e defina a página de erro personalizada como 404.php. Assim, você pode ir em Painel - Configurações - Links Permanentes para implementar URLs estáticas. No entanto, este método fará com que tags em chinês e alguns tags relacionados não sejam encontrados. A solução é procurar o seguinte código em wp-include/classes.php:
if ( isset($_SERVER['PATH_INFO']) )$pathinfo = $_SERVER['PATH_INFO'];else$pathinfo = '';$pathinfo_array = explode('?', $pathinfo);$pathinfo = str_replace("%", "%25", $pathinfo_array[0]);$req_uri = $_SERVER['REQUEST_URI'];Modifique para:
if ( isset($_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 = mb_convert_encoding($_SERVER['REQUEST_URI'], 'utf-8', 'GBK');