zhaoJian의 기술 노트

워드프레스 IIS 호스팅에서 URL 재작성을 통한 정적화 완벽 솔루션

기술 약 1351자 · 4분 소요 - 조회

먼저 웹사이트 호스팅 서비스 제공업체가 사용자 정의 오류 페이지를 지원해야 합니다. 그런 다음 UTF-8 형식의 404.php 파일을 생성하고 코드는 다음과 같습니다:

<?php
header("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 페이지로 설정합니다. 이렇게 하면 관리자 페이지 - 설정 - 고유주소 설정에서 정적화를 구현할 수 있습니다. 그러나 이 방법은 중문 태그 및 일부 관련 위치의 tags를 찾을 수 없게 만듭니다. 해결 방법은 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');
공유:

댓글