บันทึกเทคนิคของ zhaoJian

โซลูชันที่สมบูรณ์แบบสำหรับการเขียน URL ใหม่และทำ URL แบบคงที่ของ WordPress บนโฮสติ้ง IIS

เทคโนโลยี ~1523 คำ · อ่าน 4 นาที - ครั้งที่อ่าน

ก่อนอื่นคุณต้องให้ผู้ให้บริการโฮสติ้งของคุณรองรับหน้าข้อผิดพลาดที่กำหนดเอง จากนั้นสร้างไฟล์ 404.php ในรูปแบบ UTF-8 ด้วยโค้ดดังนี้:

<?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 ด้วยวิธีนี้คุณสามารถไปที่หน้าแอดมิน - การตั้งค่า - ลิงก์ถาวร เพื่อทำ URL แบบคงที่ได้ อย่างไรก็ตาม วิธีนี้จะทำให้แท็กภาษาจีนและ 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');
แชร์:

ความคิดเห็น