ระบุกฎการเปลี่ยนเส้นทางในไฟล์ JSON

คุณสามารถระบุกฎการเปลี่ยนเส้นทางในไฟล์ 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 ที่จะทดสอบ แล้วคลิก ทดสอบ

แผงทดสอบการเปลี่ยนเส้นทาง