IISホストでWordPress URLリライトで静的URLを実現する完璧なソリューション
まず、Webホスティングプロバイダーがカスタムエラーページをサポートしている必要があります。次に、以下のコードでUTF-8形式の404.phpファイルを作成します:
<?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');?>作成後、ウェブサイトのルートディレクトリにアップロードし、カスタムエラーページを404.phpに設定します。これでダッシュボード - 設定 - パーマリンクで静的URLを有効にできます。ただし、この方法では中国語タグや関連するタグが見つからなくなります。解決方法は、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'];次のように変更します:
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');