Καθορισμός κανόνων ανακατεύθυνσης σε ένα αρχείο JSON

Μπορείτε να ορίσετε κανόνες ανακατεύθυνσης για διευθύνσεις τοποθεσίας σε ένα αρχείο JSON.

Χρησιμοποιήστε την ακόλουθη μορφή σε ένα αρχείο JSON για να ορίσετε κανόνες ανακατεύθυνσης για διευθύνσεις τοποθεσίας.

{
         "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" είναι μια απαιτούμενη συμβολοσειρά που αντιστοιχεί στην εισερχόμενη διεύθυνση τοποθεσίας που έχει σχέση με την τοποθεσία. Σε έναν κανόνα χαρακτήρα μπαλαντέρ, το διακριτικό του αστερίσκου (*) αντιστοιχεί σε μηδέν ή περισσότερους χαρακτήρες.

  • Η ιδιότητα "location" είναι μια απαιτούμενη συμβολοσειρά που υποδεικνύει τη θέση ή τον προορισμό της ανακατεύθυνσης. Η ανακατεύθυνση μπορεί να είναι μια πλήρης ή μια σχετική διεύθυνση τοποθεσίας.

  • Η ιδιότητα "code" είναι ένας προαιρετικός ακέραιος που παρέχει τον κωδικό απόκρισης HTTP για χρήση κατά την έκδοση της ανακατεύθυνσης. Η τιμή πρέπει να είναι ένας από τους ακόλουθους ακεραίους:

    • 301: Υποδεικνύει ότι ο πόρος μετακινήθηκε οριστικά. Αυτή είναι η προεπιλεγμένη τιμή, αν η ιδιότητα "code" παραληφθεί.

    • 302: Υποδεικνύει ότι ο πόρος μετακινήθηκε προσωρινά.

  • Η ιδιότητα "type” είναι μια προαιρετική συμβολοσειρά που υποδεικνύει τον τύπο του κανόνα ανακατεύθυνσης. Η τιμή πρέπει να είναι μία από τις ακόλουθες συμβολοσειρές:

    • Η συμβολοσειρά "string" καθορίζει έναν γρηγορότερο κανόνα του οποίου η παράσταση αντιστοιχεί ακριβώς σε ολόκληρη την διεύθυνση τοποθεσίας εισόδου.

    • Η συμβολοσειρά "wildcard" καθορίζει έναν κανόνα χαρακτήρα μπαλαντέρ που μπορεί να αντιστοιχεί σε έναν αριθμό διευθύνσεων τοποθεσίας. Αυτή είναι η προεπιλεγμένη τιμή, αν η ιδιότητα παραληφθεί.

Διακριτικά θέσης

Μπορείτε να χρησιμοποιήσετε διακριτικά θέσης για να κατασκευάσετε μια θέση ανακατεύθυνσης. Κάθε ένα από τα ακόλουθα διακριτικά θέσης μπορούν να βοηθήσουν να καθορίσετε μια ανακατεύθυνση:

  • <$urlPath$>: Το τμήμα διαδρομής της αντίστοιχης διεύθυνσης τοποθεσίας.

  • <$urlQueryString$>: Ολόκληρη η συμβολοσειρά ερωτήματος διεύθυνσης τοποθεσίας από την αντίστοιχη διεύθυνση τοποθεσίας.

  • <$urlQueryStringExcept(name1,name2)$>: Ολόκληρη η συμβολοσειρά ερωτήματος διεύθυνσης τοποθεσίας από την αντίστοιχη διεύθυνση τοποθεσίας μείον τις καθορισμένες παραμέτρους.

  • <$wildcard(N)$>: Ο δείκτης βάσει ενός του αντίστοιχου χαρακτήρα μπαλαντέρ στην αντίστοιχη διεύθυνση τοποθεσίας. (Αυτός είναι ανάλογος με το \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"
        }            

Η ακόλουθη διεύθυνση τοποθεσίας θα αντιστοιχεί στον κανόνα:

/old/page.jsp?id=material&type=glass
  • Η θέση που προκύπτει θα είναι: /new/material.htm

  • Ολόκληρη η διεύθυνση τοποθεσίας αντιστοιχεί, συμπεριλαμβανομένης της συμβολοσειράς ερωτήματος.

  • Παρόλο που χρησιμοποιείται <$id$> στη θέση, δεν είναι απαραίτητο για αυτό το παράδειγμα γιατί μόνο μία πιθανή συμβολοσειρά ερωτήματος μπορεί να αντιστοιχεί. Η θέση θα μπορούσε να εγγραφεί ως /new/material.htm.

Οι ακόλουθες διευθύνσεις τοποθεσίας δεν θα αντιστοιχούν στον κανόνα:

  • /old/page.jsp

    (Η παράσταση του κανόνα δίνει μια συμβολοσειρά ερωτήματος που πρέπει να αντιστοιχεί.)

  • /old/page.jsp?id=material&type=glass&index=2

    (Το επιπλέον &index=2 στην υποψήφια διεύθυνση τοποθεσίας δεν αντιστοιχεί ακριβώς στην παράσταση του κανόνα.)

  • /old/page.jsp?type=glass&id=material

    (Η σειρά των παραμέτρων συμβολοσειράς ερωτήματος πρέπει να αντιστοιχεί σε έναν κανόνα "string".)

Παράδειγμα αντιστοίχισης χαρακτήρα μπαλαντέρ

Κανόνας:

        {
              "type": "wildcard",
              "expression": "/old/*/pages/*?id=*&item=sheet-*",
              "location": "/new/<$id$>/<$wildcard(4)$>.html"
        }            

Οι ακόλουθες διευθύνσεις τοποθεσίας θα αντιστοιχούν στον κανόνα:

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs

    • Η θέση που προκύπτει θα είναι: /new/XT1045/specs.html

    • Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας αντιστοιχεί, οπότε η συμβολοσειρά ερωτήματος εξετάζεται επίσης για συνθήκες αντιστοίχισης.

    • Οι παράμετροι σε αυτό το παράδειγμα τυχαίνει να αντιστοιχούν στη σειρά των παραμέτρων στην παράσταση του κανόνα, αλλά αυτό δεν απαιτείται.

  • /old/phones/android/pages/info.asp?item=sheet-specs&id=XT1045

    • Η θέση που προκύπτει θα είναι: /new/XT1045/specs.html

    • Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας αντιστοιχεί στην παράσταση του κανόνα πριν από το ερωτηματικό (?), οπότε οι παράμετροι ελέγχονται επίσης για αντιστοιχία.

    • Παρόλο που οι παράμετροι παρατίθενται με διαφορετική σειρά στην παράσταση του κανόνα, οι παράμετροι αντιστοιχίζονται μεμονωμένα.

  • /old/phones/android/pages/info.asp?id=XT1045&item=sheet-specs&unrelated=thing

    • Η θέση που προκύπτει θα είναι: /new/XT1045/specs.html

    • Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας αντιστοιχεί, οπότε η συμβολοσειρά ερωτήματος εξετάζεται επίσης για συνθήκες αντιστοίχισης.

    • Η υποψήφια διεύθυνση τοποθεσίας έχει μια πρόσθετη παράμετρο &unrelated=thing, αλλά εφόσον οι καθορισμένες παράμετροι ερωτήματος στην παράσταση του κανόνα αντιστοιχούν, ο κανόνας θεωρείται ότι αντιστοιχεί.

    • Η παράμετρος unrelated θα είναι διαθέσιμη στη θέση ως διακριτικό, ως <$unrelated$> και θα έχει την τιμή thing, παρόλο που δεν συνεισέφερε στην αντιστοίχιση του κανόνα.

Οι ακόλουθες διευθύνσεις τοποθεσίας δεν θα αντιστοιχούν:

  • /old/pages/info.jsp

    (Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας δεν αντιστοιχεί στο τμήμα διαδρομής της παράστασης του κανόνα.)

  • /old/phones/android/pages/info.asp

    (Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας αντιστοιχεί στο τμήμα διαδρομής της παράστασης του κανόνα, αλλά οι παράμετροι ερωτήματος στην παράσταση του κανόνα δεν αντιστοιχούν.)

  • /old/phones/android/pages/info.asp?id=cellular

    (Το τμήμα διαδρομής της διεύθυνσης τοποθεσίας αντιστοιχεί στο τμήμα διαδρομής της παράστασης του κανόνα, αλλά οι παράμετροι ερωτήματος στην παράσταση του κανόνα δεν αντιστοιχούν όλες.)

Ορισμός πίνακα διακριτικών

Μπορείτε επίσης να δημιουργήσετε έναν πίνακα με ορισμούς διακριτικών εντός του αρχείου redirects.json για να σας βοηθήσει κατά τη διαμόρφωση ανακατευθύνσεων που υποστηρίζουν πολλές ελκυστικές διευθύνσεις τοποθεσίας. Αυτό σας επιτρέπει να κάνετε ανακατεύθυνση σωστά με βάση τα χαρακτηριστικά της εισερχόμενης διεύθυνσης τοποθεσίας.

Χρησιμοποιήστε την ακόλουθη μορφή στο αρχείο redirects.json για να ορίσετε διακριτικά για χρήση σε διευθύνσεις τοποθεσίας κανόνων ανακατεύθυνσης.

{
         "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" για αντιστοίχιση της τιμής κεντρικού συστήματος της εισερχόμενης διεύθυνσης τοποθεσίας.

    • "pathmatch" για αντιστοίχιση της τιμής ονόματος διαδρομής της εισερχόμενης διεύθυνσης τοποθεσίας.

    • "querymatch" για αντιστοίχιση της τιμής ερωτήματος της εισερχόμενης διεύθυνσης τοποθεσίας.

  • "expression": Η έκφραση που πρέπει να χρησιμοποιείται για αντιστοίχιση. Υποστηρίζονται χαρακτήρες μπαλαντέρ.

  • "value": Η τιμή που πρέπει να χρησιμοποιείται για το διακριτικό.

  • "flags": Ως προεπιλογή, στην αντιστοίχιση της έκφρασης γίνεται διάκριση πεζών-κεφαλαίων χαρακτήρων, εκτός εάν η τιμή flags έχει οριστεί σε caseinsensitive

Κατά τον υπολογισμό της τιμής ενός διακριτικού, ο πίνακας tokenDefinitions θα απαριθμείται με τη σειρά. Θα χρησιμοποιηθεί ο πρώτος ορισμός αντιστοιχίας. Εάν κανένας ορισμός διακριτικού δεν ικανοποιεί το διακριτικό, θα χρησιμοποιηθεί αντί για αυτό μια κενή συμβολοσειρά. Για μεγαλύτερη ταχύτητα και απόδοση, τα συνηθέστερα διακριτικά πρέπει να τοποθετούνται στην αρχή της λίστας tokenDefinitions.

Οι ορισμοί tokenDefinitions έχουν τους ακόλουθους περιορισμούς:

  • Μπορείτε να δημιουργήσετε έως και 250 ορισμούς διακριτικών.

  • Το όνομα token πρέπει να περιέχει λιγότερους από 100 χαρακτήρες.

  • Η ιδιότητα expression μπορεί να περιέχει έως και 10 χαρακτήρες μπαλαντέρ.

  • Η ιδιότητα expression πρέπει να περιέχει λιγότερους από 1000 χαρακτήρες.

  • Η ιδιότητα value πρέπει να περιέχει λιγότερους από 1000 χαρακτήρες.

Παράδειγμα

Για παράδειγμα, μπορείτε να έχετε το ακόλουθο αρχείο 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. Εάν η εισερχόμενη διεύθυνση τοποθεσίας αντιστοιχεί στη διεύθυνση "vanity.com", η τιμή pathPrefix θα οριστεί σε /fashion. Αυτή θα χρησιμοποιηθεί στην απόκριση location, με αποτέλεσμα /fashion/about/new-privacy-policy.html.

Ας υποθέσουμε ότι η πρώτη διεύθυνση τοποθεσίας ελκυστικού τομέα είναι http://example.com/legacy-privacy-policy.html. Αυτή θα αντιστοιχεί με τον πρώτο και μοναδικό κανόνα ανακατεύθυνσης.

Η δηλωμένη τιμή location για αυτόν τον κανόνα είναι <$pathPrefix$>/about/new-privacy-policy.html. Σε αυτήν την περίπτωση, πρέπει να εκτιμηθεί το διακριτικό <$pathPrefix$>. Για να γίνει αυτό, ο πίνακας tokenDefinitions απαριθμείται για να βρεθεί μια αντιστοιχία.

Θεωρείται ο πρώτος ορισμός διακριτικού. Το token είναι το επιθυμητό, οπότε εκτιμάται περαιτέρω. Η έκφραση vanity.com δεν αντιστοιχεί με το example.com της εισερχόμενης διεύθυνσης τοποθεσίας, οπότε αυτός ο ορισμός δεν ικανοποιεί τις απαιτήσεις και η απαρίθμηση συνεχίζεται.

Σε αυτό το σημείο δεν υπάρχουν άλλοι ορισμοί διακριτικών, οπότε χρησιμοποιείται η κενή συμβολοσειρά για την τιμή του διακριτικού <$pathPrefix$>. Η τελική θέση που επιστρέφεται για αυτήν την ανακατεύθυνση είναι /about/new-privacy-policy.html.

Ας υποθέσουμε ότι η δεύτερη διεύθυνση τοποθεσίας ελκυστικού τομέα είναι http://vanity.com/legacy-privacy-policy.html. Όπως συνέβη με την πρώτη διεύθυνση τοποθεσίας, η δηλωμένη τιμή location για αυτόν τον κανόνα είναι <$pathPrefix$>/about/new-privacy-policy.html. Σε αυτήν την περίπτωση, πρέπει να εκτιμηθεί το διακριτικό <$pathPrefix$>. Για να γίνει αυτό, ο πίνακας tokenDefinitions απαριθμείται για να βρεθεί μια αντιστοιχία.

Θεωρείται ο πρώτος ορισμός διακριτικού. Όπως και πριν, το token είναι το επιθυμητό, οπότε εκτιμάται περαιτέρω. Η έκφραση vanity.com αντιστοιχεί με το vanity.com της εισερχόμενης διεύθυνσης τοποθεσίας, οπότε αυτός ο ορισμός ικανοποιεί τις απαιτήσεις και η τιμή /fashion χρησιμοποιείται ως τιμή του διακριτικού.

Επειδή βρέθηκε μια αντιστοιχία για το διακριτικό, η απαρίθμηση του πίνακα ορισμών διακριτικών σταματά και η τελική θέση υπολογίζεται ως /fashion/about/new-privacy-policy.html.

Δοκιμή ανακατευθύνσεων τοποθεσίας

Μπορείτε να κάνετε δοκιμή των ανακατευθύνσεων τοποθεσίας κατά την επεξεργασία μιας τοποθεσίας ανοίγοντας το πλαίσιο "Ρυθμίσεις" και κάνοντας κλικ στην επιλογή "Ανακατευθύνσεις". Καταχωρίστε μια διεύθυνση τοποθεσίας για δοκιμή και κάντε κλικ στην επιλογή "Δοκιμή".

Πλαίσιο δοκιμής ανακατευθύνσεων