全部产品
Search
文档中心

Edge Security Acceleration:Rewrite URL

更新时间:Jan 10, 2026

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 query string (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.

Use cases

  • Origin server migration: Jalur file pada server origin berubah, tetapi Anda ingin menjaga jalur akses pengguna tetap tidak berubah.

  • API version adaptation: Menulis ulang jalur API lama ke versi baru saat pengguna melakukan permintaan.

  • Parameter standardization: Menyatukan format parameter yang dikirimkan oleh klien yang berbeda.

  • Path normalization: Memetakan jalur backend yang kompleks ke jalur sederhana yang dihadapkan kepada pengguna.

How it works

Catatan

Jika Anda telah menulis ulang URL, gunakan URL yang telah ditulis ulang tersebut untuk prefetching saat Anda mengirim pekerjaan prefetch cache.

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.

Workflow

  1. Periksa hit cache: Saat permintaan pengguna mencapai POP ESA, ESA menggunakan URL asli untuk mencari sumber daya yang di-cache. Jika terjadi cache miss, ESA mengeksekusi aturan Penulisan ulang URL untuk menulis ulang 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.

Execution order

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.

Configure URL rewrite rules

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

  2. Di panel navigasi sebelah kiri, pilih Rules > Transform Rules.

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

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

  5. Di area Rewrite URL, konfigurasikan penulisan ulang untuk Path dan Query String, lalu klik OK.

    Object to rewrite

    Action

    Description

    Example

    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)

Configuration examples

Example 1: Origin server path migration

  • Scenario: Citra dimigrasikan dari folder /images/ ke folder /static/img/ pada server origin.

  • Matching condition: starts_with(http.request.uri.path, "/images/")

  • Rewrite configuration:

    • Object to rewrite: Path

    • Operation: Dynamic

    • Expression: regex_replace(http.request.uri.path, "^/images/", "/static/img/")

  • Result:

    • User request: https://example.com/images/logo.png

    • Origin fetch request: https://origin.com/static/img/logo.png

Example 2: API version adaptation

  • Scenario: Semua permintaan ke API lama /api/v1/ secara otomatis diarahkan ke versi baru /api/v2/ selama pengambilan asal, dan parameter pengenal versi ditambahkan.

  • Matching condition: starts_with(http.request.uri.path, "/api/v1/")

  • Rewrite configuration:

    • Objects to rewrite: Path, Query String

    • Operation: Dynamic

    • Path rewrite expression: regex_replace(http.request.uri.path, "^/api/v1/", "/api/v2/")

    • Query string rewrite expression: concat("api_version=v2&", http.request.uri.query)

  • Polished result:

    • User request: https://example.com/api/v1/users?limit=10

    • Origin fetch request: https://origin.com/api/v2/users?api_version=v2&limit=10

Example 3: Parameter standardization

  • Scenario: Klien yang berbeda menggunakan nama parameter berbeda, seperti userid dan uid. Satukan dengan menulis ulang menjadi standar user_id.

  • Matching condition: http.request.uri.query contains "userid="

  • Rewrite configuration:

    • Object to rewrite: Query String

    • Operation: Dynamic

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

  • Result:

    • User request: https://example.com/profile?userid=123

    • Origin fetch request: https://origin.com/profile?user_id=123

Example 4: Path normalization

  • Scenario: Standarisasi karakter URL untuk memperbaiki kesalahan input. Misalnya, Anda dapat menghapus garis miring berurutan (seperti // atau ///) dari URL.

  • Matching condition: http.request.uri.path contains "//"

  • Rewrite configuration:

    • Object to rewrite: Path

    • Operation: Dynamic

    • Expression: regex_replace(http.request.uri.path, "/+", "/")

  • Result:

    • User request: https://example.com/path//to///resource

    • Origin fetch request: https://origin.com/path/to/resource

Example 5: Delete all query parameters

  • Scenario: Untuk sumber daya statis tertentu, hapus semua parameter kueri untuk meningkatkan efisiensi pemrosesan server origin. Misalnya, Anda dapat menghapus query string dari semua URI yang diakhiri dengan .css.

  • Matching condition: ends_with(http.request.uri.path, ".css")

  • Rewrite configuration:

    • Object to rewrite: Query String

    • Operation: Static. Biarkan bidang konten kosong.

  • Result:

    • User request: https://example.com/style.css?version=1.2.3

    • Origin fetch request: https://origin.com/style.css

Example 6: Simplify dynamic paths

  • Scenario: 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/`.

  • Matching condition: http.request.uri matches "^/example/(.*)123[0-9]+(.*)$"

  • Rewrite configuration:

    • Object to rewrite: Path

    • Operation: Dynamic

    • Expression: regex_replace(http.request.uri,"^/example/(.*)123[0-9]+(.*)$","/example/$1$2")

    image

  • Result:

    • User request: https://example.com/example/tool12300341features

    • Origin fetch request: https://example.com/example/toolfeatures

Related references

Notes

Fitur-fitur terkait aturan berbeda dalam hal prioritas eksekusi, perilaku aturan, dan cakupan konfigurasi. Untuk informasi selengkapnya, lihat Cara aturan ESA berlaku.

Expression reference

Catatan

Variabel dan fungsi yang tercantum di sini hanya untuk referensi. Untuk informasi selengkapnya tentang ekspresi, lihat Components of a rule expression.

Common variables

Variable

Description

Example

http.request.uri.path

Request path

/api/user

http.request.uri.query

Query string. Tidak termasuk karakter ?.

id=123&type=user

http.request.uri

Full URI (path + query)

/api/user?id=123

Common functions

Function

Description

Example

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