Μπορείτε να ορίσετε κανόνες ανακατεύθυνσης για διευθύνσεις τοποθεσίας σε ένα αρχείο 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
.
Δοκιμή ανακατευθύνσεων τοποθεσίας
Μπορείτε να κάνετε δοκιμή των ανακατευθύνσεων τοποθεσίας κατά την επεξεργασία μιας τοποθεσίας ανοίγοντας το πλαίσιο "Ρυθμίσεις" και κάνοντας κλικ στην επιλογή "Ανακατευθύνσεις". Καταχωρίστε μια διεύθυνση τοποθεσίας για δοκιμή και κάντε κλικ στην επιλογή "Δοκιμή".