ฉันมีเว็บไซต์ WordPress ซึ่งปัจจุบัน URL ของฉันเขียนดังนี้
http://example.com/for-sale/12345-aaa-123-street-bbb-city/
และฉันต้องการยังคงให้บริการ URL เดิม แต่ฉันต้องการให้ URL มีลักษณะดังนี้
http://example.com/city/street/
ฉันได้สร้างกฎการเขียนใหม่ของ เขียนใหม่สำหรับขาย/([0-9]+)-aaa-(.*)-bbb-(.*) /$3/$2/ ถาวร;
สิ่งนี้จะเขียน URL ของฉันใหม่ แต่ส่งคืนข้อผิดพลาด 404 นี่คือสิ่งที่บันทึกการเขียนซ้ำส่งคืน
2021/11/04 04:48:39 [ประกาศ] 23077#23077: *4643 เปลี่ยนเส้นทางใหม่: "/Vernon//539-Apache-County-Road-3144/", ลูกค้า: 108.162.215.21, เซิร์ฟเวอร์: example.com คำขอ: "GET /for-sale/20071-aaa-539-Apache-County-Road-3144-bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com" คอม/เวอร์นอน/"
2021/11/04 04:48:40 [ประกาศ] 23077#23077: *4646 "สำหรับขาย/([0-9]+)-aaa-(.*)-bbb-(.*)" ตรงกับ "/ ขาย/14808-aaa-35640A-Hwy-60-bbb-Vernon/", ลูกค้า: 172.70.98.47, เซิร์ฟเวอร์: example.com, คำขอ: "GET /for-sale/14808-aaa-35640A-Hwy-60 -bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/"
2021/11/04 04:48:40 [ประกาศ] 23077#23077: *4646 เปลี่ยนเส้นทางใหม่: "/Vernon//35640A-Hwy-60/", ลูกค้า: 172.70.98.47, เซิร์ฟเวอร์: example.com, คำขอ: " GET /for-sale/14808-aaa-35640A-Hwy-60-bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/"
2021/11/04 04:48:41 [ประกาศ] 23077#23077: *4649 "for-sale/([0-9]+)-aaa-(.*)-bbb-(.*)" ไม่ตรงกัน "/for-sale/19617-2926-DEER-HILL-Road-Heber-Arizona-85928/", ลูกค้า: 108.162.245.49, เซิร์ฟเวอร์: example.com, คำขอ: "GET /for-sale/19617-2926-DEER -HILL-Road-Heber-Arizona-85928/ HTTP/1.1", โฮสต์: "example.com"
2021/11/04 04:48:41 [ประกาศ] 23077#23077: *4651 "สำหรับขาย/([0-9]+)-aaa-(.*)-bbb-(.*)" ตรงกับ "/ ขาย/6944-aaa-35640-Hwy-60-bbb-Vernon/", ลูกค้า: 172.69.35.180, เซิร์ฟเวอร์: example.com, คำขอ: "GET /for-sale/6944-aaa-35640-Hwy-60 -bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/"
2021/11/04 04:48:41 [ประกาศ] 23077#23077: *4651 เปลี่ยนเส้นทางใหม่: "/Vernon//35640-Hwy-60/", ลูกค้า: 172.69.35.180, เซิร์ฟเวอร์: example.com, คำขอ: " GET /for-sale/6944-aaa-35640-Hwy-60-bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/"
2021/11/04 04:48:42 [ประกาศ] 23077#23077: *4654 "for-sale/([0-9]+)-aaa-(.*)-bbb-(.*)" ตรงกัน "/ ขาย/18232-aaa-72-County-Road-8144-bbb-Vernon/", ลูกค้า: 172.172.35.168, เซิร์ฟเวอร์: example.com, คำขอ: "GET /for-sale/18232-aaa-72-County -Road-8144-bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/"
2021/11/04 04:48:42 [ประกาศ] 23077#23077: *4654 การเปลี่ยนเส้นทางที่เขียนใหม่: "/Vernon//72-County-Road-8144/", ลูกค้า: 172.172.35.168, เซิร์ฟเวอร์: example.com, คำขอ : "GET /for-sale/18232-aaa-72-County-Road-8144-bbb-Vernon/ HTTP/1.1", โฮสต์: "example.com", ผู้อ้างอิง: "https://example.com/vernon/ "
ฉันไม่แน่ใจว่าฉันมาถูกทางแล้ว หรือใช้กฎการเขียนใหม่ผิดในสถานการณ์นี้ ฉันได้ลองวางกฎการเขียนซ้ำในตำแหน่งของตัวเองแล้ว และลองใช้แฟล็กอื่น แต่นี่เป็นวิธีที่ใกล้เคียงที่สุดที่ฉันได้รับ
นี่คือการกำหนดค่าทั้งหมดของฉัน ขอบคุณสำหรับความช่วยเหลือใด ๆ
เซิร์ฟเวอร์ {
server_name example.com www.example.com;
access_log /var/www/example.com/logs/access.log;
error_log /var/www/example.com/logs/error.log;
rewrite_log บน;
รูท /var/www/example.com/public;
ดัชนี index.php;
ฟัง 443 ssl http2; # จัดการโดย Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # จัดการโดย Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # จัดการโดย Certbot
รวม /etc/letsencrypt/options-ssl-nginx.conf; # จัดการโดย Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # จัดการโดย Certbot
ที่ตั้ง / {
เขียนใหม่สำหรับขาย/([0-9]+)-aaa-(.*)-bbb-(.*) /$3/$2/ ถาวร;
try_files $uri $uri/ /index.php?$args;
}
#ฟาสต์ซีจี
ตำแหน่ง ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass ยูนิกซ์:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
รวม fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param เปิด HTTPS;
fastcgi_param HTTP_SCHEME https;
fastcgi_read_timeout 150;
}
#แคชไฟล์คงที่ให้นานที่สุด
ตำแหน่ง ~*.(ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar |bz)$ { หมดอายุ 365d;
}
ตำแหน่ง ~ ^/(wp-admin|wp-login|ngx_pagespeed_statistics|ngx_pagespeed_global_statistics|ngx_pagespeed_message)$ { #auth_basic "ส่วนตัว";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
}
ตำแหน่ง ~* /wp-includes/.*.php$ {
ปฏิเสธทั้งหมด
access_log off;
ปิด log_not_found;
}
ตำแหน่ง ~* /wp-content/.*.php$ {
ปฏิเสธทั้งหมด
access_log off;
ปิด log_not_found;
}
}
เซิร์ฟเวอร์ {
ถ้า ($host = www.example.com) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
ถ้า ($host = example.com) {
ส่งคืน 301 https://$host$request_uri;
} # จัดการโดย Certbot
server_name example.com www.example.com;
ฟัง 80;
กลับ 404; # จัดการโดย Certbot
}