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
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
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.
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.
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
Di Konsol ESA, pilih Websites. Di kolom Website, klik situs target.
Di panel navigasi sebelah kiri, pilih .
Pilih tab Rewrite URL. Klik Create Rule dan masukkan Rule Name.
Di area If requests match..., tetapkan kondisi yang harus dipenuhi oleh permintaan pengguna. Untuk informasi selengkapnya, lihat Components of a rule expression.
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/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)
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.pngOrigin 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=10Origin 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
useriddanuid. Satukan dengan menulis ulang menjadi standaruser_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=123Origin 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///resourceOrigin 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")

Result:
User request:
https://example.com/example/tool12300341featuresOrigin 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
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 |
| Request path |
|
| Query string. Tidak termasuk karakter |
|
| Full URI (path + query) |
|
Common functions
Function | Description | Example |
| Menggabungkan beberapa string. |
|
| Menemukan dan mengganti teks menggunakan ekspresi reguler. |
|
| Memeriksa apakah string diawali dengan awalan tertentu. |
|
| Memeriksa apakah string diakhiri dengan akhiran tertentu. |
|