全部产品
Search
文档中心

Edge Security Acceleration:Penulisan ulang URL

更新时间:Dec 16, 2025

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

  1. 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.

  2. 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.

  3. 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

  1. Di Konsol ESA, pilih Websites. Pada kolom Website, klik situs target.

  2. Pada panel navigasi di sebelah kiri, pilih Rules > Transform Rules.

  3. Pilih tab Rewrite URL. Klik Create Rule dan masukkan Rule Name.

  4. Pada area If requests match..., tetapkan kondisi yang harus dipenuhi oleh permintaan pengguna. Untuk informasi selengkapnya, lihat Components of a rule expression.

  5. 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/path

    Dynamic

    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=api

    Dynamic

    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.png

    • Permintaan 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=10

    • Permintaan 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 userid dan uid. Satukan dengan menulis ulang menjadi parameter standar user_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=123

    • Permintaan 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///resource

    • Permintaan 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")

    image

  • Hasil:

    • Permintaan pengguna: https://example.com/example/tool12300341features

    • Permintaan pengambilan asal: https://example.com/example/toolfeatures

Referensi terkait

Catatan

Fitur terkait aturan memiliki variasi dalam execution priorityrule behavior, dan configuration scope. Untuk informasi selengkapnya, lihat How ESA rules take effect.

Referensi ekspresi

Catatan

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

http.request.uri.path

Jalur permintaan

/api/user

http.request.uri.query

String kueri. Tidak termasuk karakter ?.

id=123&type=user

http.request.uri

URI lengkap (jalur + kueri)

/api/user?id=123

Fungsi umum

Fungsi

Deskripsi

Contoh

concat(str1, str2, ...)

Menggabungkan beberapa string.

concat("/v2", http.request.uri.path)

regex_replace(text, pattern, replacement)

Menemukan dan mengganti teks menggunakan ekspresi reguler.

regex_replace(http.request.uri.query, "userid=", "user_id=")

starts_with(text, prefix)

Memeriksa apakah string diawali dengan awalan tertentu.

starts_with(http.request.uri.path, "/images/")

ends_with(text, suffix)

Memeriksa apakah string diakhiri dengan akhiran tertentu.

ends_with(http.request.uri.path, ".html")