Alibaba Cloud CDN mendukung URL rewrite. Fitur ini hanya memengaruhi URL yang digunakan untuk permintaan origin fetch dan tidak berdampak pada routing internal CDN atau kunci cache.
Cara kerja
Aturan Origin Path Rewrite memungkinkan Anda mengubah jalur permintaan agar sesuai dengan lokasi resource sebenarnya di server origin. Hal ini memastikan bahwa POP dapat mengambil resource secara akurat atau meneruskan string kueri tertentu ke origin.
-
Jika Flag diatur ke None atau break, hanya jalur resource dalam URL yang ditulis ulang.

-
Jika Flag diatur ke enhance break, baik jalur resource maupun string kueri dapat ditulis ulang.

Catatan penggunaan
-
Anda dapat mengonfigurasi hingga 50 aturan Origin Path Rewrite untuk satu nama domain.
-
Aturan diterapkan dari atas ke bawah. Urutan tersebut memengaruhi hasil akhir rewrite.
-
Saat Anda mengonfigurasi aturan Origin Path Rewrite, aturan tersebut dapat bertentangan dengan fitur Ignore Parameters pada tab Domain Names > Optimization. Hindari konflik konfigurasi.
-
Jika Anda mengonfigurasi aturan Origin Path Rewrite dan Origin Path Rewrite, aturan Origin Path Rewrite dapat mengubah jalur URL origin fetch. Hal ini menyebabkan jalur permintaan yang diterima oleh server origin berbeda dari jalur yang diharapkan, sehingga menghasilkan error 404. Untuk pemecahan masalah, nonaktifkan sementara aturan Origin Path Rewrite untuk melihat apakah permintaan berfungsi seperti yang diharapkan. Jika Anda perlu menggunakan kedua fitur tersebut, sesuaikan prioritas dan kondisi aturan untuk mencegah penulisan ulang jalur yang tidak disengaja.
Access URL Rewrite versus Origin Path Rewrite
|
Fitur |
Target |
Pengalaman klien |
Kasus penggunaan |
|
Mempengaruhi URL yang menghadap klien maupun URL yang digunakan untuk permintaan origin-pull. |
|
Umumnya digunakan untuk migrasi atau pemetaan URL dari domain lama ke domain baru, atau untuk menyediakan URL berbeda bagi klien mobile dan desktop. Contoh: Saat klien mengakses |
|
|
Hanya memengaruhi URL yang digunakan POP untuk permintaan origin-pull. URL yang menghadap klien tetap tidak berubah. |
URL yang menghadap klien tidak berubah. |
Umumnya digunakan untuk menyembunyikan struktur URL sebenarnya dari server origin, atau untuk memetakan URL agar POP dapat menarik konten dari direktori origin yang berbeda. Contoh: Saat klien mengakses |
Access URL Rewrite diagram
-
Klien mengirim permintaan ke CDN untuk URL
old.example.com/hello. -
CDN menerima permintaan tersebut. Berdasarkan aturan Access URL Rewrite, POP mengembalikan respons 302 ke klien dan menempatkan URL baru
new.example.com/hellodi header HTTPLocation. -
Setelah menerima respons 302, klien mengirim permintaan baru ke URL tersebut.
-
POP memeriksa cache-nya. Jika konten yang ditulis ulang sudah di-cache, POP langsung mengembalikannya ke klien. Jika tidak, POP mengirim permintaan origin-pull ke server origin untuk URL yang ditulis ulang
new.example.com/hello. -
Server origin menerima permintaan dan mengembalikan respons ke POP.
-
POP menyimpan respons tersebut dalam cache dan mengembalikannya ke klien.
Origin Path Rewrite diagram
-
Klien mengirim permintaan ke CDN untuk URL
cdn.example.com/files/hello.txt. -
POP menerima permintaan dan memeriksa cache-nya. Jika konten yang diminta sudah di-cache, POP langsung mengembalikannya ke klien. Jika tidak, berdasarkan aturan Origin Path Rewrite, POP menulis ulang URL origin-pull menjadi
origin.example.com/secret/files/hello.txtdan mengirim permintaan ke server origin. -
Server origin menerima permintaan dan mengembalikan respons ke POP.
-
POP menyimpan respons tersebut dalam cache dan mengembalikannya ke klien.
Konfigurasi origin path rewrite
-
Login ke CDN console.
-
Di panel navigasi kiri, klik Domain Names.
-
Pada halaman Domain Names, temukan nama domain target dan klik Manage di kolom Actions.
-
Di panel navigasi kiri untuk nama domain tersebut, klik Origin Fetch.
-
Klik tab Origin Path Rewrite.
-
Klik Add. Konfigurasikan Path to Be Rewritten, Target Path, dan Flag.
Parameter
Contoh
Deskripsi
Path to Be Rewritten
^/hello$
Jalur URL yang diawali garis miring (/) dan tidak mencakup
http://atau nama domain. Anda harus menggunakan pola PCRE (Perl Compatible Regular Expressions).Target Path
/hello/test
Jalur URL yang diawali garis miring (/) dan tidak mencakup
http://atau nama domain. PCRE didukung.Flag
None
Jika Anda mengonfigurasi beberapa aturan, setelah aturan ini cocok dan dieksekusi, aturan pencocokan berikutnya juga dieksekusi secara berurutan.
break
-
Jika Anda mengonfigurasi beberapa aturan dan URL permintaan cocok dengan aturan ini, aturan berikutnya tidak dievaluasi.
-
Hanya jalur resource dari URL yang dimodifikasi, bukan parameter URL. Oleh karena itu, hal ini tidak memengaruhi penulisan ulang parameter URL oleh fitur Origin Path Rewrite.
enhance break
-
Jika Anda mengonfigurasi beberapa aturan dan URL permintaan cocok dengan aturan ini, aturan berikutnya tidak dievaluasi.
-
Serupa dengan
break, tetapi flag ini juga menulis ulang string kueri. Hal ini dapat bertentangan dengan fitur rewrite origin fetch parameters. Jika Anda menggunakan kedua fitur tersebut, pastikan konfigurasi Anda tidak saling bertentangan.
-
-
Klik OK untuk menerapkan aturan.
Anda juga dapat mengklik Modify atau Delete dalam daftar aturan pada tab Origin Path Rewrite untuk mengelola aturan yang sudah ada.
Contoh konfigurasi
-
Contoh 1: Flag diatur ke None
Path to Be Rewritten
^/hello$
Target Path
/index.html
Flag
None
Hasil
Permintaan asli:
http://example.com/helloPermintaan origin fetch setelah rewrite:
http://example.com/index.htmlPermintaan kemudian dicocokkan dengan aturan berikutnya dalam daftar Origin Path Rewrite.
-
Contoh 2: Flag diatur ke break
Path to Be Rewritten
^/hello.jpg$
Target Path
/image/hello.jpg
Flag
break
Hasil
Permintaan asli:
http://example.com/hello.jpgPermintaan origin fetch setelah rewrite:
http://example.com/image/hello.jpgTidak ada aturan berikutnya dalam daftar Origin Path Rewrite yang dievaluasi.
-
Contoh 3: Flag diatur ke enhance break
Path to Be Rewritten
^/hello.jpg?code=123$
Target Path
/image/hello.jpg?code=321
Flag
enhance break
Hasil
Permintaan asli:
http://example.com/hello.jpg?code=123Permintaan origin fetch setelah rewrite:
http://example.com/image/hello.jpg?code=321Tidak ada aturan berikutnya dalam daftar Origin Path Rewrite yang dievaluasi.
-
Contoh 4: Menambahkan awalan untuk jalur variabel di direktori root
Sebagai contoh, Anda dapat menulis ulang jalur URL seperti /xxx, di mana xxx adalah nama file variabel (misalnya, /hello.jpg atau /hello.html), menjadi /image/xxx. Hal ini menyisipkan awalan /image ke dalam jalur untuk file apa pun di direktori root.
Path to Be Rewritten
^(.*)$
Catatan^mencocokkan awal string.(.*)adalah grup penangkapan, di mana.mencocokkan karakter tunggal apa pun kecuali karakter baris baru, dan*mencocokkan karakter atau grup sebelumnya nol atau lebih kali. Anda dapat menggunakan $1 di Target Path untuk mereferensikan konten yang ditangkap oleh grup ini.$mencocokkan akhir string. Oleh karena itu,^(.*)$mencocokkan seluruh string dari awal hingga akhir dan menangkap semua karakter, kecuali karakter baris baru, ke dalam satu grup. Misalnya, untuk string"hello world",^(.*)$mencocokkan seluruh string dan menangkap"hello world"ke dalam grup pertama.Target Path
/image$1
Catatan/imagemencocokkan string"/image".$1mereferensikan konten dari grup penangkapan pertama,$2mereferensikan konten dari grup penangkapan kedua, dan seterusnya. Oleh karena itu,/image$1berarti string"/image"diikuti langsung oleh konten dari grup penangkapan pertama. Misalnya, jika konten grup penangkapan pertama adalah"abc",/image$1mencocokkan string"/imageabc". Perhatikan bahwa$1mereferensikan konten grup penangkapan, bukan string literal"$1". Untuk mencocokkan string literal"$1", Anda harus menggunakan karakter escape, seperti"\$1".Flag
break
Hasil
-
Permintaan asli:
http://example.com/hello.jpgPermintaan origin fetch setelah rewrite:
http://example.com/image/hello.jpg -
Permintaan asli:
http://example.com/hello.htmlPermintaan origin fetch setelah rewrite:
http://example.com/image/hello.html
Tidak ada aturan berikutnya dalam daftar Origin Path Rewrite yang dievaluasi.
-
-
Contoh 5: Menambahkan awalan untuk jalur di bawah direktori tertentu
Sebagai contoh, Anda dapat menulis ulang URL yang berisi /live/xxx, di mana xxx mewakili nama file apa pun (misalnya, hello.jpg atau hello.html), menjadi /image/live/xxx. Hal ini menyisipkan awalan /image ke dalam jalur untuk file apa pun di bawah direktori /live.
Path to Be Rewritten
^/live/(.*)$
Target Path
/image/live/$1
Flag
break
Hasil
-
Permintaan asli:
http://example.com/live/hello.jpgPermintaan origin fetch setelah rewrite:
http://example.com/image/live/hello.jpg -
Permintaan asli:
http://example.com/live/hello.htmlPermintaan origin fetch setelah rewrite:
http://example.com/image/live/hello.html
Tidak ada aturan berikutnya dalam daftar Origin Path Rewrite yang dievaluasi.
-
-
Contoh 6: Merangkai aturan dengan flag None
Pertimbangkan dua aturan rewrite yang diaktifkan. Aturan 1 menulis ulang
^/image_01.png$menjadi/image_02.pngdengan Flag diatur ke None. Aturan 2 menulis ulang^(.*)$menjadi/image$1dengan Flag diatur ke None.Hasil:
-
Permintaan asli:
http://example.com/image_01.png -
Permintaan origin fetch setelah rewrite:
http://example.com/image/image_02.pngCatatanPermintaan pertama kali cocok dengan Aturan 1 dan ditulis ulang menjadi
http://example.com/image_02.png. Karena Flag diatur ke None, jalur yang ditulis ulang kemudian dievaluasi terhadap Aturan 2, yang juga cocok. Jalur tersebut ditulis ulang untuk kedua kalinya, menghasilkan jalur akhir:http://example.com/image/image_02.png.
-
-
Contoh 7: Menghentikan evaluasi aturan dengan break
Pertimbangkan dua aturan rewrite yang diaktifkan. Aturan 1 menulis ulang
^/image_01.png$menjadi/image_02.pngdengan Flag diatur ke break. Aturan 2 menulis ulang^(.*)$menjadi/image$1dengan Flag diatur ke None. Ketika permintaan cocok dengan Aturan 1, pemrosesan dihentikan, dan aturan berikutnya tidak dievaluasi karena Flag diatur ke break.Hasil:
-
Permintaan asli:
http://example.com/image_01.png -
Permintaan origin fetch setelah rewrite:
http://example.com/image_02.pngCatatanPermintaan pertama kali cocok dengan Aturan 1 dan ditulis ulang menjadi
http://example.com/image_02.png. Karena Flag untuk Aturan 1 diatur ke break, pemrosesan dihentikan dan tidak ada aturan berikutnya yang dievaluasi.
-