{"id":2000,"date":"2014-10-24T07:56:58","date_gmt":"2014-10-24T07:56:58","guid":{"rendered":"http:\/\/blog.jaringanhosting.com\/?p=2000"},"modified":"2014-10-24T08:06:11","modified_gmt":"2014-10-24T08:06:11","slug":"asp-net-hosting-indonesia-jaringanhosting-com-url-rewriting-dengan-asp-net","status":"publish","type":"post","link":"https:\/\/blog.jaringanhosting.com\/index.php\/asp-net-hosting-indonesia-jaringanhosting-com-url-rewriting-dengan-asp-net\/","title":{"rendered":"ASP.NET Hosting Indonesia &#8211; JaringanHosting.com :: URL Rewriting dengan ASP.NET"},"content":{"rendered":"<p style=\"text-align: justify;\">URL Rewriting atau bisa juga kita sebut penulisan ulang atau pergantian URL pada situs kita. URL Rewriting terkadang dilakukan untuk beberapa tujuan diantaranya, untuk alasan security dan juga SEO. Jika membahas tentang SEO, Rewriting URL juga merupakan cara yang lumayan efektif untuk meningkatkan pengunjung blog Anda. Tapi kali ini kita tidak akan membahas tentang SEO, melainkan membahas technical mengenai <span style=\"text-decoration: underline;\"><strong>URL Rewriting menggunakan<\/strong><\/span><strong> ASP.NET.<\/strong> Pada artikel sebelumnya saya telah membagikan tentang\u00a0<a href=\"http:\/\/blog.jaringanhosting.com\/index.php\/cara-mengintegrasikan-pembayaran-via-credit-card-dengan-asp\/\">Cara Mengintegrasikan Pembayaran via Credit Card Dengan AS<\/a>P<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/jaringanhosting.com\/Indonesia-Windows-Basic-Hosting-Paket\"><img loading=\"lazy\" class=\"aligncenter wp-image-2002 size-full\" src=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/Perfect-Domain-Name-e1414125392874.jpg\" alt=\"Perfect-Domain-Name\" width=\"372\" height=\"279\" srcset=\"https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/Perfect-Domain-Name-e1414125392874.jpg 372w, https:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/Perfect-Domain-Name-e1414125392874-300x225.jpg 300w\" sizes=\"(max-width: 372px) 100vw, 372px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><strong>Contoh Skenario\u00a0URL Rewriting<\/strong><\/p>\n<p style=\"text-align: justify;\">Untuk tujuan posting blog ini, saya akan menganggap kita sedang membangun sebuah situs\u00a0e-commerce yaitu halaman katalog, Dan kategori produknya telah kita tetapkan\u00a0(misalnya: buku, video, CD, DVD, dll ).<\/p>\n<p style=\"text-align: justify;\">Mari kita asumsikan bahwa kita awalnya memiliki halaman yang disebut &#8220;Products.aspx&#8221; yang mengambil nama kategori sebagai querystring argumen, dan menyaring produk yang sesuai. URL yang sesuai dengan halaman Products.aspx terlihat seperti ini:<\/p>\n<pre class=\"lang:default decode:true\">http:\/\/www.tokokita.com\/products.aspx?category=books\r\nhttp:\/\/www.tokokita.com\/products.aspx?category=DVDs\r\nhttp:\/\/www.tokokita.com\/products.aspx?category=CDs<\/pre>\n<p style=\"text-align: justify;\">Kita\u00a0menggunakan QueryString untuk mengekspos setiap kategori, selanjutnya kita memodifikasi aplikasi sehingga setiap kategori produk tampak seperti URL unik yang baik untuk <em>search engine<\/em>, dan memiliki <em>keyword<\/em> kategori yang tertanam di URL yang sebenarnya. Saya\u00a0akan menjelaskan tutorial ini dengan\u00a0lebih dari 4 pendekatan yang berbeda yang kita bisa ambil untuk keseluruhannya.<\/p>\n<p><strong>Pendekatan 1: Gunakan Request.PathInfo Parameter querystrings<\/strong><\/p>\n<p style=\"text-align: justify;\">Pada pendekatan pertama saya akan menunjukkan untuk tidak menggunakan URL Rewriting\u00a0sama sekali, dan sebagai gantinya menggunakan fitur yang sedikit diketahui dari ASP.NET &#8211; Request.PathInfo <em>property<\/em>. Untuk membantu menjelaskan kegunaan dari properti ini, pertimbangkan skenario URL di bawah ini untuk toko e-commerce kita:<\/p>\n<pre class=\"lang:default decode:true\">http:\/\/www.tokokita.com\/products.aspx\/Books\r\nhttp:\/\/www.tokokita.com\/products.aspx\/DVDs\r\nhttp:\/\/www.tokokita.com\/products.aspx\/CDs<\/pre>\n<p style=\"text-align: justify;\">Satu hal yang akan Anda\u00a0lihat dari\u00a0URL di atas \u00a0bahwa\u00a0URL tersebut\u00a0tidak lagi memiliki nilai-nilai Querystring,\u00a0bukan nilai parameter kategori yang ditambahkan ke URL sebagai Trailing \/param<em> value<\/em>\u00a0 setelah nama Products.aspx \u00a0sebagai halaman handler. Sebuah crawler <em>search engine<\/em>\u00a0otomatis kemudian akan menafsirkan URL ini sebagai tiga URL yang berbeda, dan bukan sebagai satu URL dengan tiga nilai input yang berbeda (mesin pencari mengabaikan ekstensi nama file dan hanya memperlakukannya sebagai karakter lain dalam URL).<\/p>\n<p style=\"text-align: justify;\">Anda mungkin bertanya-tanya bagaimana Anda menangani skenario yang ditambahkan di parameter ini dalam ASP.NET. Kabar baiknya adalah bahwa hal itu cukup sederhana. Cukup menggunakan Request.PathInfo\u00a0<em>property<\/em> , yang akan segera mengembalikan konten setelah bagian products.aspx dari URL. Jadi untuk URL di atas, Request.PathInfo akan kembali &#8220;\/ Buku&#8221;, &#8220;\/ DVD&#8221;, dan &#8220;\/ CD&#8221; (dalam kasus Anda bertanya-tanya, properti Request.Path akan kembali menjadi &#8220;\/products.aspx&#8221;).<\/p>\n<p style=\"text-align: justify;\">Anda kemudian dapat dengan mudah menulis fungsi untuk mengambil kategori seperti begitu.<\/p>\n<pre class=\"lang:default decode:true\">    Function GetCategory() As String\r\n\r\n        If (Request.PathInfo.Length = 0) Then\r\n            Return \"\"\r\n        Else\r\n            Return Request.PathInfo.Substring(1)\r\n        End If\r\n\r\n    End Function<\/pre>\n<p><strong>Pendekatan 2: Menggunakan HttpModule untuk menampilkan\u00a0URL Rewriting<\/strong><\/p>\n<p style=\"text-align: justify;\">Pendekatan alternatif untuk teknik Request.PathInfo diatas akan mengambil keuntungan dari metode HttpContext.RewritePath () yang disediakan ASP.NET. Metode ini memungkinkan developer\u00a0untuk secara dinamis menulis ulang jalur pengolahan URL yang masuk, dan ASP.NET untuk kemudian melanjutkan mengeksekusi permintaan menggunakan jalur baru yang ditulis ulang.<\/p>\n<p>Sebagai contoh, kita bisa memilih untuk mengekspos URL berikut untuk publik:<\/p>\n<pre class=\"lang:default decode:true\">http:\/\/www.tokokita.com\/products\/Books.aspx\r\nhttp:\/\/www.tokokita.com\/products\/DVDs.aspx\r\nhttp:\/\/www.tokokita.com\/products\/CDs.aspx<\/pre>\n<p style=\"text-align: justify;\">Hal ini terlihat seperti ada tiga halaman terpisah di situs kita dan akan terlihat bagus untuk crawler pencarian. Dengan menggunakan metode HttpContext.RewritePath () kita secara dinamis dapat menulis ulang URL yang masuk ketika mereka pertama kali mengakses server untuk bukan memanggil halaman Products.aspx tunggal yang mengambil nama kategori sebagai Querystring atau parameter PathInfo sebagai gantinya. Sebagai contoh, kita bisa menggunakan Application_BeginRequest di Global.asax untuk melakukan hal ini:<\/p>\n<pre class=\"lang:default decode:true \">   void Application_BeginRequest(object sender, EventArgs e) {\r\n \r\n        string fullOrigionalpath = Request.Url.ToString();\r\n        \r\n        if (fullOrigionalpath.Contains(\"\/Products\/Books.aspx\")) {\r\n            Context.RewritePath(\"\/Products.aspx?Category=Books\");\r\n        }\r\n        else if (fullOrigionalpath.Contains(\"\/Products\/DVDs.aspx\")) {\r\n            Context.RewritePath(\"\/Products.aspx?Category=DVDs\");\r\n        }\r\n    }<\/pre>\n<p style=\"text-align: justify;\">Kelemahan dari menulis menual kode seperti di atas adalah bahwa hal itu dapat membosankan dan rawan kesalahan. Daripada melakukannya sendiri, saya akan merekomendasikan kepada Anda untuk menggunakan salah satu HttpModules yang sudah dibangun dan tersedia di web secara gratis untuk melakukan pekerjaan ini untuk Anda. Berikut beberapa penyedia yang memberikan layanan\u00a0gratis yang dapat Anda download dan gunakan saat ini:<\/p>\n<ul style=\"text-align: justify;\">\n<li>UrlRewriter.net<\/li>\n<li>UrlRewriting.net<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Modul ini memungkinkan Anda untuk menerangkan dengan cepat\u00a0aturan pencocokan dalam file web.config aplikasi Anda. Misalnya, untuk menggunakan modul UrlRewriter.Net dalam file web.config aplikasi Anda untuk memetakan URL di atas ke halaman Products.aspx tunggal, kita hanya bisa menambahkan file web.config ini untuk aplikasi kita dan tidak ada kode lain yang diperlukan :<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\"?&gt;\r\n\r\n&lt;configuration&gt;\r\n\r\n  &lt;configSections&gt;\r\n    &lt;section name=\"rewriter\"  \r\n             requirePermission=\"false\" \r\n             type=\"Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter\" \/&gt;\r\n  &lt;\/configSections&gt;\r\n  \r\n  &lt;system.web&gt;\r\n      \r\n    &lt;httpModules&gt;\r\n      &lt;add name=\"UrlRewriter\" type=\"Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter\"\/&gt;\r\n    &lt;\/httpModules&gt;\r\n    \r\n  &lt;\/system.web&gt;\r\n\r\n  &lt;rewriter&gt;\r\n    &lt;rewrite url=\"~\/products\/books.aspx\" to=\"~\/products.aspx?category=books\" \/&gt;\r\n    &lt;rewrite url=\"~\/products\/CDs.aspx\" to=\"~\/products.aspx?category=CDs\" \/&gt;\r\n    &lt;rewrite url=\"~\/products\/DVDs.aspx\" to=\"~\/products.aspx?category=DVDs\" \/&gt;\r\n  &lt;\/rewriter&gt;  \r\n  \r\n&lt;\/configuration&gt;<\/pre>\n<p style=\"text-align: justify;\">HttpModule Rewriters URL \u00a0di atas juga menambahkan\u00a0<em>support<\/em>\u00a0untuk <em>regular expression<\/em> dan pola\u00a0pencocokan URL. Jadi, bukan\u00a0hanya\u00a0<em>hard-coding<\/em>\u00a0list kategori, Anda bisa menulis ulang aturan seperti di bawah ini untuk secara dinamis menarik kategori dari URL untuk setiap kombinasi &#8220;\/products\/[category].aspx&#8221; :<\/p>\n<pre class=\"lang:default decode:true \">&lt;rewriter&gt;\r\n    &lt;rewrite url=\"~\/products\/(.+).aspx\" to=\"~\/products.aspx?category=$1\" \/&gt;\r\n&lt;\/rewriter&gt;<\/pre>\n<p style=\"text-align: justify;\">Hal ini membuat akan kode Anda jauh lebih bersih dan super extensible.<\/p>\n<p style=\"text-align: justify;\"><strong>Pendekatan 3: Menggunakan HttpModule untuk menampilkan\u00a0<em>Ekstensi-Less<\/em>\u00a0URL\u00a0Rewriting dengan IIS7<\/strong><\/p>\n<p style=\"text-align: justify;\">Pendekatan HttpModule untuk skenario di mana Anda menulis ulang URL memiliki ekstensi .aspx, atau ekstensi file lain yang dikonfigurasi untuk diproses oleh ASP.NET. Ketika Anda melakukan konfigurasi ini, tidak ada kustom server yang diperlukan.<\/p>\n<p style=\"text-align: justify;\">Ada saat ketika Anda ingin menulis ulang URL yang memiliki ekstensi non-ASP.NET file (misalnya: .jpg, .gif, atau htm). Sebagai contoh, kita mungkin ingin mengekspos URL ini sebagai halaman katalog publik kita :<\/p>\n<pre class=\"lang:default decode:true\">http:\/\/www.tokokita.com\/products\/Books\r\nhttp:\/\/www.tokokita.com\/products\/DVDs\r\nhttp:\/\/www.tokokita.com\/products\/CDs<\/pre>\n<p style=\"text-align: justify;\">Dengan IIS5 dan IIS6, pengolahan URL di atas menggunakan ASP.NET tidak akan mudah untuk kita lakukan. IIS 5\/6 membuat kita sulit untuk melakukan penulisan ulang URL pada jenis URL dalam Extensions ISAPI yang diimplementasikan ASP.NET. Sebaliknya Anda perlu melakukan penulisan ulang IIS <em>request pipeline<\/em> menggunakan ISAPI Filter. Saya akan menunjukkan bagaimana cara untuk melakukan ini pada IIS5\/6 dalam Pendekatan 4 bagian di bawah.<\/p>\n<p style=\"text-align: justify;\">Kabar baiknya adalah bahwa IIS 7.0 membuat penanganan jenis skenario yang super mudah. Sekarang Anda dapat melihat\u00a0HttpModule mengeksekusi apa saja dalam IIS <em>request pipeline,\u00a0<\/em>yang berarti Anda dapat menggunakan modul URLRewriter di atas untuk memproses dan menulis ulang ekstensi URL. Di bawah ini adalah cara bagaimana Anda akan mengkonfigurasikan ini dengan IIS7:<\/p>\n<pre class=\"lang:default decode:true \">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n\r\n&lt;configuration&gt;\r\n\r\n  &lt;configSections&gt;\r\n    &lt;section name=\"rewriter\" \r\n             requirePermission=\"false\" \r\n             type=\"Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter\" \/&gt;\r\n  &lt;\/configSections&gt;\r\n  \r\n  &lt;system.web&gt;\r\n      \r\n    &lt;httpModules&gt;\r\n      &lt;add name=\"UrlRewriter\" type=\"Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter\" \/&gt;\r\n    &lt;\/httpModules&gt;\r\n    \r\n  &lt;\/system.web&gt;\r\n\r\n  &lt;system.webServer&gt;\r\n\r\n    &lt;modules runAllManagedModulesForAllRequests=\"true\"&gt;\r\n      &lt;add name=\"UrlRewriter\" type=\"Intelligencia.UrlRewriter.RewriterHttpModule\" \/&gt;\r\n    &lt;\/modules&gt;\r\n\r\n    &lt;validation validateIntegratedModeConfiguration=\"false\" \/&gt;\r\n\r\n  &lt;\/system.webServer&gt;\r\n\r\n  &lt;rewriter&gt;\r\n    &lt;rewrite url=\"~\/products\/(.+)\" to=\"~\/products.aspx?category=$1\" \/&gt;\r\n  &lt;\/rewriter&gt;\r\n  \r\n&lt;\/configuration&gt;<\/pre>\n<p style=\"text-align: justify;\">Perhatikan &#8220;runAllManagedModulesForAllRequests&#8221; atribut yang diatur true pada &lt;modules&gt; pada bagian dalam &lt;system.webServer&gt;. Ini akan memastikan bahwa modul UrlRewriter.Net dari Intelligencia, yang ditulis sebelum IIS7 dikirim, akan dipanggil dan memiliki kesempatan untuk menulis ulang semua permintaan URL ke server (termasuk untuk folder). Apa yang benar-benar terlihat keren tentang file web.config di atas adalah bahwa:<\/p>\n<ol>\n<li>Ini akan bekerja pada setiap IIS 7.0. Anda tidak perlu sebagai administrator untuk mengaktifkan apapun pada remote host. Hal ini juga akan bekerja dalam skenario <em>shared hosting<\/em>.<\/li>\n<li>Karena saya\u00a0sudah mengkonfigurasi UrlRewriter baik di bagian &lt;HttpModules&gt; dan IIS7 &lt;modules&gt;, saya dapat menggunakan URL yang sama saat Menulis ulang aturan untuk kedua VS web-server serta pada IIS7. Keduanya sepenuhnya mendukung ekstensi URLRewriting. Hal ini membuat pengujian dan pengembangan menjadi sangat mudah.<\/li>\n<\/ol>\n<p><strong>Pendekatan 4: ISAPIRewrite untuk mengaktifkan Ekstensi URL Rewriting untuk IIS5 dan IIS6<\/strong><\/p>\n<p style=\"text-align: justify;\">Jika Anda tidak ingin menggunakan\u00a0IIS 7.0 dalam rangka untuk mengambil keuntungan dari ekstensi URL Rewriting, maka cara terbaik adalah dengan menggunakan ISAPI Filter untuk menulis ulang URL. Ada dua ISAPI Filter yang saya\u00a0sadari bahwa Anda mungkin ingin menggunakannya:<\/p>\n<ul>\n<li>Helicon Tech ISAPI Rewrite: Mereka memberikan ISAPI Rewrite versi produk lengkap hanya dengan\u00a0$ 99 (dengan trial\u00a030 hari), serta ISAPI Rewrite edisi lite yang bebas.<\/li>\n<li>Ionic&#8217;s\u00a0ISAPI Rewrite: Ini bisa Anda\u00a0download secara gratis<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Saya\u00a0benar-benar tidak punya pengalaman menggunakan salah satu solusi di atas, meskipun saya pernah mendengar hal-hal baik tentang solusi diatas. Scott Hanselman dan Jeff Atwood baru-baru ini keduanya menulis posting blog yang besar tentang pengalaman mereka menggunakan solusi tersebut, dan juga memberikan beberapa contoh tentang bagaimana untuk mengkonfigurasi solusi diatas. Aturan untuk Helicon Tech ISAPI Rewrite menggunakan sintaks yang sama seperti mod_rewrite Apache. Sebagai contoh :<\/p>\n<pre class=\"lang:default decode:true \">[ISAPI_Rewrite]\r\n# fix missing slash on folders\r\n# note, this assumes we have no folders with periods!\r\nRewriteCond Host: (.*)\r\nRewriteRule ([^.?]+[^.?\/]) http\\:\/\/$1$2\/ [RP]\r\n\r\n# remove index pages from URLs\r\nRewriteRule (.*)\/default.htm$ $1\/ [I,RP]\r\nRewriteRule (.*)\/default.aspx$ $1\/ [I,RP]\r\nRewriteRule (.*)\/index.htm$ $1\/ [I,RP]\r\nRewriteRule (.*)\/index.html$ $1\/ [I,RP]\r\n\r\n# force proper www. prefix on all requests\r\nRewriteCond %HTTP_HOST ^test\\.com [I]\r\nRewriteRule ^\/(.*) http:\/\/www.test.com\/$1 [RP]\r\n\r\n# only allow whitelisted referers to hotlink images\r\nRewriteCond Referer: (?!http:\/\/(?:www\\.good\\.com|www\\.better\\.com)).+\r\nRewriteRule .*\\.(?:gif|jpg|jpeg|png) \/images\/block.jpg [I,O]<\/pre>\n<p style=\"text-align: justify;\">Catatan: Ada satu\u00a0kelemahan untuk menggunakan filter ISAPI adalah bahwa shared hosting biasanya tidak akan memungkinkan Anda untuk menginstal komponen ini, dan sehingga Anda akan memerlukan sebuah VPS\u00a0atau server dedicated hosting untuk menggunakannya. Tapi, jika Anda memiliki rencana untuk menggunakan VPS dan Dedicated Hosting\u00a0yang memungkinkan Anda untuk menginstal ISAPI, itu akan memberikan fleksibilitas maksimum pada IIS5 \/6.<\/p>\n<p style=\"text-align: justify;\"><strong>Penanganan\u00a0ASP.NET PostBacks dengan\u00a0URL Rewriting<\/strong><\/p>\n<p style=\"text-align: justify;\">Satu hal\u00a0bahwa orang sering mengalami kendala ketika menggunakan ASP.NET dan Url-Rewriting adalah bahwa mereka harus melakukan dengan penanganan skenario postbacks. Khususnya, ketika Anda menempatkan sebuah &lt;form runat = &#8220;server&#8221;&gt; kontrol pada halaman, ASP.NET akan secara otomatis menghasilkan\u00a0<em>default output<\/em><span style=\"color: #505151;\">\u00a0<\/span>&#8220;action&#8221; atribut markup untuk mengarahkan\u00a0kembali ke halaman itu. Masalah saat menggunakan URL-Rewriting adalah bahwa URL yang &lt;form&gt; kontrol tidak membuat URL asli dari permintaan (misalnya: \/produk \/buku), melainkan ditulis ulang satu (misalnya:\/produk. aspx?kategori= uku). Ini berarti bahwa ketika Anda melakukan postback ke server, URL tidak akan terlihat &#8220;bersih&#8221;.<\/p>\n<p style=\"text-align: justify;\">Dengan ASP.NET 1.0 dan 1.1, orang sering terpaksa <em>sub-classing<\/em>\u00a0&lt;form&gt; kontrol dan menciptakan kontrol mereka sendiri yang benar untuk <em>output<\/em>\u00a0tindakan yang\u00a0digunakan.\u00a0Akhirnya menjadi sedikit berantakan,\u00a0karena itu berarti Anda harus memperbarui semua halaman Anda untuk menggunakan bentuk kontrol lainnya, dan kadang-kadang dkita\u00a0memiliki masalah dengan Visual Studio desainer WYSIWYG.<\/p>\n<p style=\"text-align: justify;\">Kabar baiknya adalah bahwa dengan ASP.NET 2.0, ada trik <em>cleaner<\/em> yang dapat Anda gunakan untuk menulis ulang &#8220;action&#8221; atribut pada &lt;form&gt; kontrol. Secara khusus, Anda dapat mengambil keuntungan dari ASP.NET 2.0 Kontrol Adapter arsitektur untuk menyesuaikan <em>rendering<\/em> dari &lt;form&gt; kontrol, dan menimpa &#8220;action&#8221; <em>value<\/em>\u00a0atribut dengan <em>value<\/em>\u00a0yang Anda berikan. Ini tidak mengharuskan Anda untuk mengubah kode apapun di halaman .aspx Anda. Sebaliknya, hanya menambahkan file .browser ke folder \/app_browsers Anda yang register kelas Kontrol Adapter digunakan untuk output baru &#8220;action&#8221; atribut:<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/step1.jpg\"><img loading=\"lazy\" class=\"aligncenter wp-image-2008 size-full\" src=\"http:\/\/blog.jaringanhosting.com\/wp-content\/uploads\/2014\/10\/step1-e1414135514856.jpg\" alt=\"step1\" width=\"228\" height=\"268\" \/><\/a><\/p>\n<p><strong>Penanganan CSS dan Gambar yang Referensi Benar<\/strong><\/p>\n<p style=\"text-align: justify;\">Satu hal\u00a0bahwa kebanyakan orang\u00a0kadang-kadang mengalami gangguan ketika menggunakan URL Rewriting\u00a0untuk pertama kalinya adalah bahwa mereka menemukan bahwa gambar dan <em>CSS stylesheet<\/em> referensi mereka kadang-kadang tampak berhenti bekerja. Hal ini karena mereka memiliki referensi relatif terhadap file-file ini di dalam halaman HTML mereka dan ketika Anda mulai menulis ulang URL dalam aplikasi Anda, perlu menyadari bahwa browser akan sering meminta file dalam tingkat hirarki logis yang berbeda dari apa yang sebenarnya disimpan pada server.<\/p>\n<p style=\"text-align: justify;\">Misalnya, jika halaman \/products.aspx kita di atas memiliki referensi relatif terhadap &#8220;logo.jpg&#8221; di halaman .aspx, tapi diminta melalui url \/products\/books.aspx, maka browser akan mengirimkan permintaan untuk \/produk\/logo.jpg bukannya \/logo.jpg ketika merender halaman. Untuk referensi file ini dengan benar, pastikan Anda memenuhi syarat <em>root<\/em> CSS dan Image referensi (&#8220;\/style.css&#8221; bukan &#8220;style.css&#8221;). Untuk ASP.NET kontrol, Anda juga dapat menggunakan ~ sintaks untuk referensi file dari <em>root<\/em>\u00a0aplikasi (misalnya:\u00a0&lt;asp:image imageurl=&#8221;~\/images\/logo.jpg&#8221; runat=&#8221;server&#8221;\/&gt;. Sekian mengenai <span style=\"text-decoration: underline;\"><strong>URL Rewriting dengan ASP.NET<\/strong><\/span> Semoga bermanfaat<\/p>\n","protected":false},"excerpt":{"rendered":"<p>URL Rewriting atau bisa juga kita sebut penulisan ulang atau pergantian URL pada situs kita. URL Rewriting terkadang dilakukan untuk beberapa tujuan diantaranya, untuk alasan security dan juga SEO. Jika membahas tentang SEO, Rewriting URL juga merupakan cara yang lumayan<\/p>\n","protected":false},"author":4710,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/2000"}],"collection":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/users\/4710"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/comments?post=2000"}],"version-history":[{"count":0,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/posts\/2000\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/media?parent=2000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/categories?post=2000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jaringanhosting.com\/index.php\/wp-json\/wp\/v2\/tags?post=2000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}