Jika jalur sumber daya pada server origin Anda berubah tetapi Anda ingin menjaga URL yang diakses klien tetap tidak berubah, Anda dapat menggunakan aturan penulisan ulang URL. Konfigurasikan aturan ini pada titik keberadaan (POPs) Edge Security Acceleration (ESA). Aturan tersebut secara otomatis memodifikasi jalur dan string kueri (parameter permintaan) suatu URL selama tahap pengambilan asal. ESA kemudian mengirimkan URL yang telah ditulis ulang ke server origin Anda untuk mengambil sumber daya tersebut. Fitur ini memungkinkan migrasi lancar dan integrasi tanpa perubahan pada tautan antarmuka depan atau konfigurasi server origin.
Kasus penggunaan
Migrasi server origin: Jalur file pada server origin berubah, tetapi Anda ingin menjaga jalur akses pengguna tetap tidak berubah.
Adaptasi versi API: Menulis ulang jalur API lama ke versi baru saat pengguna membuat permintaan.
Standarisasi parameter: Menyatukan format parameter yang dikirimkan oleh klien yang berbeda.
Normalisasi jalur: Memetakan jalur backend yang kompleks ke jalur sederhana yang dihadapkan kepada pengguna.
Cara kerja
Penulisan ulang URL hanya memengaruhi pengambilan asal dan tidak berdampak pada proses internal di ESA. Kunci cache dihasilkan dari URL asli untuk memastikan hit cache yang konsisten. URL yang ditulis ulang hanya digunakan untuk permintaan pengambilan asal yang dikirim ke server origin. Proses ini menjaga jalur eksternal tetap sama sekaligus memungkinkan adaptasi internal yang fleksibel.
Alur kerja
Periksa hit cache: Saat permintaan pengguna mencapai POP ESA, ESA menggunakan URL asli untuk menemukan sumber daya yang di-cache. Jika terjadi cache miss, ESA mengeksekusi aturan penulisan ulang URL untuk mengubah URL asli menjadi URL target.
Ambil dari origin saat cache miss: ESA menggunakan URL yang telah ditulis ulang untuk meminta sumber daya dari server origin. Server origin merespons, dan ESA menyimpan konten tersebut dalam cache. ESA menggunakan URL asli sebagai kunci cache.
Kembalikan konten yang di-cache ke klien: ESA mengembalikan konten yang di-cache ke klien.
Urutan eksekusi
Penulisan ulang URL dijalankan setelah pemeriksaan hit cache tetapi sebelum permintaan pengambilan asal dikirim. Eksekusi dilakukan setelah aturan pemilihan server origin tetapi sebelum aturan modifikasi header permintaan pengambilan asal. Hal ini memastikan bahwa jalur permintaan dapat disesuaikan secara fleksibel setelah server origin ditentukan, tanpa memengaruhi pemrosesan header berikutnya.
Konfigurasikan aturan penulisan ulang URL
Di Konsol ESA, pilih Websites. Pada kolom Website, klik situs target.
Pada panel navigasi di sebelah kiri, pilih .
Pilih tab Rewrite URL. Klik Create Rule dan masukkan Rule Name.
Pada area If requests match..., tetapkan kondisi yang harus dipenuhi oleh permintaan pengguna. Untuk informasi selengkapnya, lihat Components of a rule expression.
Pada area Rewrite URL, konfigurasikan penulisan ulang untuk Path dan Query String, lalu klik OK.
Objek untuk ditulis ulang
Tindakan
Deskripsi
Contoh
Path
Retain
Tidak memodifikasi jalur asli.
-
Rewrite to...
Static
Ganti dengan jalur tetap. Harus diawali dengan
/./new/pathDynamic
Menggunakan expression untuk menghasilkan jalur secara dinamis.
concat("/v2", http.request.uri.path)Query String
Retain
Tidak memodifikasi parameter kueri asli.
-
Rewrite to...
Static
Ganti dengan parameter statis. Jangan sertakan karakter
?.version=new&type=apiDynamic
Menggunakan expression untuk menghasilkan parameter secara dinamis.
concat("version=new&", http.request.uri.query)
Contoh konfigurasi
Contoh 1: Migrasi jalur server origin
Skenario: Citra dimigrasikan dari folder
/images/ke folder/static/img/pada server origin.Kondisi pencocokan:
starts_with(http.request.uri.path, "/images/")Konfigurasi penulisan ulang:
Objek yang ditulis ulang: Path
Operasi: Dinamis
Ekspresi:
regex_replace(http.request.uri.path, "^/images/", "/static/img/")
Hasil:
Permintaan pengguna:
https://example.com/images/logo.pngPermintaan pengambilan asal:
https://origin.com/static/img/logo.png
Contoh 2: Adaptasi versi API
Skenario: Semua permintaan ke API lama
/api/v1/secara otomatis diarahkan ke versi baru/api/v2/selama pengambilan asal, dan parameter pengenal versi ditambahkan.Kondisi pencocokan:
starts_with(http.request.uri.path, "/api/v1/")Konfigurasi penulisan ulang:
Objek yang ditulis ulang: Path, Query String
Operasi: Dinamis
Ekspresi penulisan ulang jalur:
regex_replace(http.request.uri.path, "^/api/v1/", "/api/v2/")Ekspresi penulisan ulang string kueri:
concat("api_version=v2&", http.request.uri.query)
Hasil akhir:
Permintaan pengguna:
https://example.com/api/v1/users?limit=10Permintaan pengambilan asal:
https://origin.com/api/v2/users?api_version=v2&limit=10
Contoh 3: Standarisasi parameter
Skenario: Klien yang berbeda menggunakan nama parameter yang berbeda, seperti
useriddanuid. Satukan dengan menulis ulang menjadi parameter standaruser_id.Kondisi pencocokan:
http.request.uri.query contains "userid="Konfigurasi penulisan ulang:
Objek yang akan ditulis ulang: Query String
Operasi: Dynamic
Ekspresi:
regex_replace(http.request.uri.query, "userid=", "user_id=")
Hasil:
Permintaan pengguna:
https://example.com/profile?userid=123Permintaan pengambilan asal:
https://origin.com/profile?user_id=123
Contoh 4: Normalisasi jalur
Skenario: Standarisasi karakter URL untuk memperbaiki kesalahan input. Misalnya, Anda dapat
menghapus garis miring berurutan (seperti // atau ///) dari URL.Kondisi pencocokan:
http.request.uri.path contains "//"Konfigurasi penulisan ulang:
Objek yang ditulis ulang: Path
Operasi: Dinamis
Ekspresi:
regex_replace(http.request.uri.path, "/+", "/")
Hasil:
Permintaan pengguna:
https://example.com/path//to///resourcePermintaan pengambilan asal:
https://origin.com/path/to/resource
Contoh 5: Hapus semua parameter kueri
Skenario: Untuk sumber daya statis tertentu, hapus semua parameter kueri guna meningkatkan efisiensi pemrosesan server origin. Misalnya, Anda dapat menghapus string kueri dari semua URI yang diakhiri dengan
.css.Kondisi pencocokan:
ends_with(http.request.uri.path, ".css")Konfigurasi penulisan ulang:
Objek yang ditulis ulang: Query String
Operasi: Static. Biarkan bidang konten kosong.
Hasil:
Permintaan pengguna: https://example.com/style.css?version=1.2.3
Permintaan pengambilan asal:
https://origin.com/style.css
Contoh 6: Sederhanakan jalur dinamis
Skenario: Perpendek jalur panjang yang mengandung angka atau kode berlebihan. Misalnya,
hapus semua kemunculan <code data-tag="code" id="9a285905069nu">123</code> dan rangkaian digit berikutnya dari jalur `/example/`.Kondisi pencocokan:
http.request.uri matches "^/example/(.*)123[0-9]+(.*)$"Konfigurasi penulisan ulang:
Objek yang ditulis ulang: Path
Operasi: Dynamic
Ekspresi:
regex_replace(http.request.uri,"^/example/(.*)123[0-9]+(.*)$","/example/$1$2")

Hasil:
Permintaan pengguna:
https://example.com/example/tool12300341featuresPermintaan pengambilan asal:
https://example.com/example/toolfeatures
Referensi terkait
Catatan
Fitur terkait aturan memiliki variasi dalam execution priority, rule behavior, dan configuration scope. Untuk informasi selengkapnya, lihat How ESA rules take effect.
Referensi ekspresi
Variabel dan fungsi yang tercantum di sini hanya untuk referensi. Untuk informasi selengkapnya tentang ekspresi, lihat Components of a rule expression.
Variabel umum
Variabel | Deskripsi | Contoh |
| Jalur permintaan |
|
| String kueri. Tidak termasuk karakter |
|
| URI lengkap (jalur + kueri) |
|
Fungsi umum
Fungsi | Deskripsi | Contoh |
| Menggabungkan beberapa string. |
|
| Menemukan dan mengganti teks menggunakan ekspresi reguler. |
|
| Memeriksa apakah string diawali dengan awalan tertentu. |
|
| Memeriksa apakah string diakhiri dengan akhiran tertentu. |
|