คุณสามารถระบุกฎการเปลี่ยนเส้นทางในไฟล์ JSON ได้
ใช้รูปแบบต่อไปนี้ในไฟล์ JSON เพื่อระบุกฎการเปลี่ยนเส้นทางสำหรับ URL
{ "redirectRules": [ { "type": "string", "comment": "this rule is applied first", "expression": "/index.htm", "location": "/home.html" }, { "type": "wildcard", "expression": "/items/*?page=*", "location": "/<$page$>?item=<$wildcard(1)$>", "code": 302 } ] }
โครงสร้างที่เก็บส่วนนอกในไฟล์ JSON คืออาร์เรย์ อาร์เรย์จะมีอินสแตนซ์ของกฎ
ระบบจะประมวลผลกฎ "string"
ก่อน ตามด้วยกฎ "wildcard"
ตามลำดับ เมื่อมีหนึ่งในกฎที่ตรงกันแล้ว การประมวลผลกฎครั้งต่อไปจะถูกล้มเลิก และการเปลี่ยนเส้นทางที่เกี่ยวข้องจะได้รับการสร้างขึ้น
แต่ละกฎมีคุณสมบัติดังต่อไปนี้
คุณสมบัติ "comment"
เป็นสตริงตัวเลือกที่ไม่มีผลกับการประมวลผลของกฎ ซึ่งจะรวมหมายเหตุหรือความเห็น
คุณสมบัติ "expression"
คือสตริงที่จำเป็นที่ตรงกับ URL ขาเข้าที่เกี่ยวข้องกับไซต์ ในกฎสัญลักษณ์การค้นหา โทเค็นเครื่องหมายดอกจัน (*
) จะตรงกับศูนย์อักขระหรือมากกว่า
คุณสมบัติ "location"
คือสตริงที่จำเป็นที่ระบุถึงตำแหน่งหรือปลายทางของการเปลี่ยนเส้นทาง การเปลี่ยนเส้นทางสามารถเป็น URL แบบเต็มหรือแบบอ้างอิง
คุณสมบัติ "code"
คือเลขจำนวนเต็มตัวเลือกที่จะมอบรหัสการตอบกลับ HTTP ที่จะใช้เมื่อออกการเปลี่ยนเส้นทาง ค่าต้องเป็นหนึ่งในเลขจำนวนเต็มต่อไปนี้
301: ระบุว่าทรัพยากรถูกย้ายถาวร ค่านี้เป็นค่าดีฟอลต์ หากมีการละเว้นคุณสมบัติ "code"
302: ระบุว่าทรัพยากรถูกย้ายชั่วคราว
คุณสมบัติ "ประเภท" เป็นสตริงตัวเลทอกที่ระบุประเภทของกฎการเปลี่ยนเส้นทาง ค่าต้องเป็นหนึ่งในสตริงต่อไปนี้
"string"
จะระบุกฎที่เร็วกว่าที่มีเอ็กซ์เพรสชันที่ตรงกับ URL อินพุตทั้งหมด
"wildcard"
จะระบุกฎสัญลักษณ์การค้นหาที่สามารถจับคู่จำนวนของ URL นี่คือค่าดีฟอลต์หากคุณสมบัติถูกละเว้น
โทเค็นตำแหน่ง
คุณสามารถใช้โทเค็นตำแหน่งเพื่อช่วยสร้างตำแหน่งสำหรับการเปลี่ยนเส้นทาง โทเค็นตำแหน่งแต่ละรายการต่อไปนี้จะช่วยคุณระบุการเปลี่ยนเส้นทางได้
<$urlPath$>
: ส่วนของพาธของ URL ที่ตรงกัน
<$urlQueryString$>
: สตริงการสืบค้น URL ทั้งหมดจาก URL ที่ตรงกัน
<$urlQueryStringExcept(name1,name2)$>
: สตริงการสืบค้น URL ทั้งหมดจาก URL ที่ตรงกันที่ลบพารามิเตอร์ที่กำหนด
<$wildcard(N)$>
: ดัชนีชนิดเริ่มจากหนึ่งของสัญลักษณ์การค้นหาที่ตรงกันใน URL ที่ตรงกัน (ซึ่งคล้ายกับ \1..\9
ในเอ็กซ์เพรสชันทั่วไป)
<$name$>
: ค่าของพารามิเตอร์สตริงการสืบค้นที่กำหนด ตัวอย่างเช่น หากคุณมีสตริงการสืบค้น msmith: ?page=42
ในอินพุต คุณจะสามารถใช้ <$page$>
ในตำแหน่งเพื่อวาง '42'
ลงในตำแหน่ง
ข้อจำกัด
ข้อจำกัดต่อไปนี้ใช้กับไฟล์ redirects.json
ทั้งหมดและกับกฎที่ไฟล์นั้นมี
ขนาดไฟล์โดยรวมสูงสุดที่ Oracle Content Management ยอมรับคือ 250 KB
จำนวนสูงสุดของกฎในไฟล์ redirects.json
คือ 1,000
ความยาวสูงสุดของ "expression"
สำหรับกฎคือ 1,000 อักขระ
ความยาวสูงสุดของ "location"
สำหรับกฎคือ 2,000 อักขระ
จำนวนสูงสุดของโทเค็น '*'
ในเอ็กซ์เพรสชันของกฎสัญลักษณ์การค้นหาคือ 10
ตัวอย่างการตรงกันของสตริง
กฎ:
{ "type": "string", "expression": "/old/page.jsp?id=material&type=glass", "location": "/new/<$id$>.htm" }
URL ต่อไปนี้จะตรงกับกฎ
/old/page.jsp?id=material&type=glass
ตำแหน่งที่ได้จะเป็น: /new/material.htm
การตรงกันของ URL ทั้งหมด รวมถึงสตริงการสืบค้น
แม้ว่า <$id$>
จะถูกใช้ในตำแหน่ง แต่ก็ไม่จำเป็นสำหรับตัวอย่างนี้เนื่องจากมีสตริงการสืบค้นเพียงรายการเดียวที่ตรงกันได้ ตำแหน่งควรเขียนเป็น /new/material.htm
URL ต่อไปนี้ไม่ควรตรงกับกฎ:
/old/page.jsp
(เอ็กซ์เพรสชันของกฎจะให้สตริงการสืบค้นที่ต้องตรงกัน)
/old/page.jsp?id=material&type=glass&index=2
(&index=2
เพิ่มเติมใน URL ที่เป็นทางเลือกไม่ตรงกับเอ็กซ์เพรสชันของกฎพอดี)
/old/page.jsp?type=glass&id=material
(ลำดับของพารามิเตอร์สตริงการสืบค้นต้องตรงกันในกฎ “สตริง”)
ตัวอย่างการตรงกันของสัญลักษณ์การค้นหา
กฎ:
{ "type": "wildcard", "expression": "/old/*/pages/*?id=*&item=sheet-*", "location": "/new/<$id$>/<$wildcard(4)$>.html" }
URL ต่อไปนี้จะตรงกับกฎ
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs
ตำแหน่งที่ได้จะเป็น: /new/XT1045/specs.html
ส่วนของพาธของ URL ตรงกัน สตริงการสืบค้นจึงได้รับการตรวจสอบสำหรับเงื่อนไขที่ตรงกันด้วย
พารามิเตอร์ในตัวอย่างนี้ตรงกับลำดับของพารามิเตอร์ในเอ็กซ์เพรสชันของกฎ แต่ไม่ได้เป็นข้อกำหนดที่ต้องตรงกัน
/old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045
ตำแหน่งที่ได้จะเป็น: /new/XT1045/specs.html
ส่วนของพาธของ URL ตรงกับเอ็กซ์เพรสชันของกฎก่อนเครื่องหมายคำถาม (?
) ดังนั้นพารามิเตอร์จะได้รับการตรวจสอบสำหรับรายการที่ตรงกันด้วย
แม้ว่าพารามิเตอร์จะแสดงในลำดับที่แตกต่างกันในเอ็กซ์เพรสชันของกฎ แต่จะมีการจับคู่พารามิเตอร์แยกกัน
/old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing
ตำแหน่งที่ได้จะเป็น: /new/XT1045/specs.html
ส่วนของพาธของ URL ตรงกัน สตริงการสืบค้นจึงได้รับการตรวจสอบสำหรับเงื่อนไขที่ตรงกันด้วย
URL ที่เป็นตัวเลือกมีพารามิเตอร์ &unrelated=thing
เพิ่มเติม แต่เนื่องจากพารามิเตอร์การสืบค้นที่กำหนดในเอ็กซ์เพรสชันของกฎตรงกัน จะถือว่ากฎต้องตรงกันด้วย
พารามิเตอร์ unrelated
จะพร้อมใช้งานในตำแหน่งเป็นโทเค็นในรูปแบบ <$unrelated$>
และจะมีค่า thing
แม้ว่าจะไม่ได้ทำให้เกิดการตรงกันของกฎก็ตาม
URL ต่อไปนี้จะไม่ตรงกัน:
/old/pages/info.jsp
(ส่วนของพาธของ URL ตรงกับส่วนของพาธของเอ็กซ์เพรสชันของกฎ)
/old/phones/android/pages/info.asp
(ส่วนของพาธของ URL ตรงกับส่วนของพาธของเอ็กซ์เพรสชันของกฎ แต่พารามิเตอร์การสืบค้นในเอ็กซ์เพรสชันของกฎไม่ตรงกัน)
/old/phones/android/pages/info.asp?id=cellular
(ส่วนของพาธของ URL ตรงกับส่วนของพาธของเอ็กซ์เพรสชันของกฎ แต่พารามิเตอร์การสืบค้นบางรายการในเอ็กซ์เพรสชันของกฎจะไม่ตรงกัน)
อาเรย์การกำหนดโทเค็น
นอกจากนี้ คุณยังสามารถสร้างอาเรย์ของการกำหนดโทเค็นภายในไฟล์ redirects.json
เพื่อช่วยคอนฟิเกอร์การเปลี่ยนเส้นทางที่รองรับ URL ย่อหลายรายการได้ด้วย ซึ่งจะทำให้คุณเปลี่ยนเส้นทางได้อย่างเหมาะสมตามลักษณะของ URL ขาเข้า
ใช้รูปแบบต่อไปนี้ในไฟล์ redirects.json
เพื่อกำหนดโทเค็นที่จะใช้ในกฎการเปลี่ยนเส้นทาง URL
{ "tokenDefinitions": [ { "token": "sitePrefix", "type": "hostmatch", "expresion": "example.com" "value": "" }, { "token": "sitePrefix", "type": "hostmatch", "expresion": "*.com" "value": "/site/Starter-Site" }, { "token": "gotoRedirect", "type": "pathmatch", "expresion": "*oracle*" "value": "https://www.oracle.com" "flags": "caseinsensitive" }, ] }
tokenDefinitions จะมีคุณสมบัติต่อไปนี้
"token"
: ชื่อโทเค็นที่จะกำหนด
"type"
: เลือกประเภทใดประเภทหนึ่งต่อไปนี้
"hostmatch"
ซึ่งจะต้องตรงกับค่าโฮสต์ของ URL ขาเข้า
"pathmatch"
ซึ่งจะต้องตรงกับค่าชื่อพาธของ URL ขาเข้า
"querymatch"
ซึ่งจะต้องตรงกับค่าการสืบค้นของ URL ขาเข้า
"expression"
: เอ็กซ์เพรสชันที่ควรจะใช้ในการจับคู่ รองรับสัญลักษณ์การค้นหา
"value"
: ค่าที่ควรจะใช้สำหรับโทเค็น
"flags"
: ตามค่าดีฟอลต์ การจับคู่ของเอ็กซ์เพรสชันจะต้องตรงตามตัวพิมพ์เล็กและใหญ่ เว้นแต่จะตั้งค่า flags
เป็น caseinsensitive
เมื่อประมวลผลค่าโทเค็น อาเรย์ tokenDefinitions
จะแจกแจงตามลำดับ ระบบจะใช้การกำหนดการจับคู่รายการแรก หากไม่มีการกำหนดโทเค็นที่ตรงกับโทเค็นนั้น ระบบจะใช้สตริงว่างแทน เพื่อความสะดวกและประสิทธิภาพการทำงานที่ดี ควรวางโทเค็นที่ใช้บ่อยไว้ด้านบนสุดของลิสต์ tokenDefinitions
tokenDefinitions
มีข้อจำกัดต่อไปนี้
คุณสามารถสร้างการกำหนดโทเค็นได้สูงสุด 250 รายการ
ชื่อ token
ต้องมีอักขระน้อยกว่า 100 ตัว
expression
มีสัญลักษณ์การค้นหาได้สูงสุด 10 รายการ
expression
ต้องมีอักขระน้อยกว่า 1,000 ตัว
value
ต้องมีอักขระน้อยกว่า 1,000 ตัว
ตัวอย่าง
ตัวอย่างเช่น คุณอาจมีไฟล์ redirects.json ดังต่อไปนี้
{ "redirectRules": [ { "type": "string", "expression": "/legacy-privacy-policy.html", "location": "<$pathPrefix$>/about/new-privacy-policy.html" }, ] "tokenDefinitions": [ { "token": "pathPrefix", "type": "hostmatch", "expression": "vanity.com" "value": "/fashion" }, ] }
ในกรณีนี้ คุณสมบัติ location
ของกฎจะมีโทเค็น <$pathPrefix$>
โทเค็น pathPrefix
ได้รับการกำหนดไว้ในส่วน tokenDefinitions
หาก URL ขาเข้าตรงกับ "vanity.com" ค่า pathPrefix
จะได้รับการตั้งค่าเป็น /fashion
ซึ่งจะใช้ในการตอบกลับ location
โดยให้ผลลัพธ์เป็น /fashion/about/new-privacy-policy.html
สมมุติว่า URL ย่อรายการแรกของโดเมนคือ http://example.com/legacy-privacy-policy.html
URL นี้จะตรงกับกฎการเปลี่ยนเส้นทางรายการแรกและรายการเดียว
คุณสมบัติ location
ที่ประกาศสำหรับกฎนี้คือ <$pathPrefix$>/about/new-privacy-policy.html
ในกรณีนี้ จะต้องประมวลผลโทเค็น <$pathPrefix$>
ในการจะทำเช่นนั้นได้ อาเรย์ tokenDefinitions
จะได้รับการแจกแจงเพื่อหารายการที่ตรงกัน
ระบบจะพิจารณาการกำหนดโทเค็นรายการแรก token
คือค่าที่ต้องการ ดังนั้นจึงมีการประมวลผลเพิ่มเติม เอ็กซ์เพรสชัน vanity.com
ไม่ตรงกับ example.com
ของ URL ขาเข้า ดังนั้นการกำหนดนี้จึงไม่สอดคล้องกับข้อกำหนดที่ต้องการ และการแจกแจงจะดำเนินต่อไป
ณ จุดนี้ไม่มีการกำหนดโทเค็นอื่นแล้ว ดังนั้นระบบจะใช้สตริงว่างสำหรับค่าของโทเค็น <$pathPrefix$>
ตำแหน่งสุดท้ายที่ส่งกลับมาสำหรับการเปลี่ยนเส้นทางนี้คือ /about/new-privacy-policy.html
สมมุติว่า URL ย่อรายการที่สองของโดเมนคือ http://vanity.com/legacy-privacy-policy.html
เช่นเดียวกับ URL แรก คุณสมบัติ location
ที่ประกาศสำหรับกฎนี้คือ <$pathPrefix$>/about/new-privacy-policy.html
ในกรณีนี้ จะต้องประมวลผลโทเค็น <$pathPrefix$>
ในการจะทำเช่นนั้นได้ อาเรย์ tokenDefinitions
จะได้รับการแจกแจงเพื่อหารายการที่ตรงกัน
ระบบจะพิจารณาการกำหนดโทเค็นรายการแรก เช่นเดิม token
คือค่าที่ต้องการ ดังนั้นจึงมีการประมวลผลเพิ่มเติม เอ็กซ์เพรสชัน vanity.com
ไม่ตรงกับ vanity.com
ของ URL ขาเข้า ดังนั้นการกำหนดนี้จึงไม่สอดคล้องกับข้อกำหนดที่ต้องการ และระบบจะใช้ค่า /fashion
เป็นค่าของโทเค็น
เนื่องจากระบบพบโทเค็นที่ตรงกัน การแจกแจงของอาเรย์การกำหนดโทเค็นจึงหยุดลง และตำแหน่งสุดท้ายจะได้รับการประมวลผลเป็น /fashion/about/new-privacy-policy.html
การทดสอบการเปลี่ยนเส้นทางของไซต์
คุณสามารถทดสอบการเปลี่ยนเส้นทางของไซต์ได้เมื่อแก้ไขไซต์ โดยเปิดแผง การตั้งค่า แล้วคลิก การเปลี่ยนเส้นทาง ป้อน URL ที่จะทดสอบ แล้วคลิก ทดสอบ