{"id":3701,"date":"2025-12-29T22:55:14","date_gmt":"2025-12-29T19:55:14","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/cloudflare-workers-ve-bunnycdn-edge-rules-ile-origin-yukunu-edgee-tasimak\/"},"modified":"2025-12-29T22:55:14","modified_gmt":"2025-12-29T19:55:14","slug":"cloudflare-workers-ve-bunnycdn-edge-rules-ile-origin-yukunu-edgee-tasimak","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/cloudflare-workers-ve-bunnycdn-edge-rules-ile-origin-yukunu-edgee-tasimak\/","title":{"rendered":"Cloudflare Workers ve BunnyCDN Edge Rules ile Origin Y\u00fck\u00fcn\u00fc Edge\u2019e Ta\u015f\u0131mak"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Neden_Edgede_Kod_Calistirmaya_Ihtiyac_Duyuyoruz\"><span class=\"toc_number toc_depth_1\">1<\/span> Neden Edge\u2019de Kod \u00c7al\u0131\u015ft\u0131rmaya \u0130htiya\u00e7 Duyuyoruz?<\/a><\/li><li><a href=\"#Cloudflare_Workers_ve_BunnyCDN_Edge_Rules_Temel_Farklari\"><span class=\"toc_number toc_depth_1\">2<\/span> Cloudflare Workers ve BunnyCDN Edge Rules Temel Farklar\u0131<\/a><ul><li><a href=\"#Cloudflare_Workers_Edgede_Gercek_Kod_Calistirma\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Cloudflare Workers: Edge\u2019de Ger\u00e7ek Kod \u00c7al\u0131\u015ft\u0131rma<\/a><\/li><li><a href=\"#BunnyCDN_Edge_Rules_Kosul_Aksiyon_Motoru\"><span class=\"toc_number toc_depth_2\">2.2<\/span> BunnyCDN Edge Rules: Ko\u015ful + Aksiyon Motoru<\/a><\/li><\/ul><\/li><li><a href=\"#Originden_Edgee_Tasinabilecek_Isler\"><span class=\"toc_number toc_depth_1\">3<\/span> Origin\u2019den Edge\u2019e Ta\u015f\u0131nabilecek \u0130\u015fler<\/a><ul><li><a href=\"#1_URL_Rewrite_ve_Routing\"><span class=\"toc_number toc_depth_2\">3.1<\/span> 1. URL Rewrite ve Routing<\/a><\/li><li><a href=\"#2_Guvenlik_Basliklari\"><span class=\"toc_number toc_depth_2\">3.2<\/span> 2. G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/a><\/li><li><a href=\"#3_Basit_Kosullu_Mantik\"><span class=\"toc_number toc_depth_2\">3.3<\/span> 3. Basit Ko\u015fullu Mant\u0131k<\/a><\/li><\/ul><\/li><li><a href=\"#Cloudflare_Workers_ile_URL_Rewrite_ve_Guvenlik_Basliklari\"><span class=\"toc_number toc_depth_1\">4<\/span> Cloudflare Workers ile URL Rewrite ve G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/a><ul><li><a href=\"#Workers_ile_Basit_URL_Rewrite_Ornegi\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Workers ile Basit URL Rewrite \u00d6rne\u011fi<\/a><\/li><li><a href=\"#Workers_ile_Guvenlik_Basliklari_Ekleme\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Workers ile G\u00fcvenlik Ba\u015fl\u0131klar\u0131 Ekleme<\/a><\/li><li><a href=\"#Workers_ile_Basit_Kosullu_Mantik_Ulke_Bazli_Yonlendirme\"><span class=\"toc_number toc_depth_2\">4.3<\/span> Workers ile Basit Ko\u015fullu Mant\u0131k (\u00dclke Bazl\u0131 Y\u00f6nlendirme)<\/a><\/li><\/ul><\/li><li><a href=\"#BunnyCDN_Edge_Rules_ile_URL_Rewrite_ve_Guvenlik_Basliklari\"><span class=\"toc_number toc_depth_1\">5<\/span> BunnyCDN Edge Rules ile URL Rewrite ve G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/a><ul><li><a href=\"#BunnyCDN_Edge_Rules_ile_URL_Rewrite_Ornegi\"><span class=\"toc_number toc_depth_2\">5.1<\/span> BunnyCDN Edge Rules ile URL Rewrite \u00d6rne\u011fi<\/a><\/li><li><a href=\"#BunnyCDN_ile_Guvenlik_Basligi_Ekleme\"><span class=\"toc_number toc_depth_2\">5.2<\/span> BunnyCDN ile G\u00fcvenlik Ba\u015fl\u0131\u011f\u0131 Ekleme<\/a><\/li><li><a href=\"#Edge_Rules_ile_Cache_Davranisini_Ayarlamak\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Edge Rules ile Cache Davran\u0131\u015f\u0131n\u0131 Ayarlamak<\/a><\/li><\/ul><\/li><li><a href=\"#Edge_Kurallarini_SEO_ve_CDN_Onbellekleme_ile_Uyumlu_Kullanmak\"><span class=\"toc_number toc_depth_1\">6<\/span> Edge Kurallar\u0131n\u0131 SEO ve CDN \u00d6nbellekleme ile Uyumlu Kullanmak<\/a><ul><li><a href=\"#301302_Yonlendirme_Kurallari\"><span class=\"toc_number toc_depth_2\">6.1<\/span> 301\/302 Y\u00f6nlendirme Kurallar\u0131<\/a><\/li><li><a href=\"#Canonical_ve_Ic_Linkler\"><span class=\"toc_number toc_depth_2\">6.2<\/span> Canonical ve \u0130\u00e7 Linkler<\/a><\/li><li><a href=\"#stale-while-revalidate_ile_Birlikte_Kullanim\"><span class=\"toc_number toc_depth_2\">6.3<\/span> stale-while-revalidate ile Birlikte Kullan\u0131m<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_Origin_Altyapisi_ile_Ornek_Mimari\"><span class=\"toc_number toc_depth_1\">7<\/span> DCHost Origin Altyap\u0131s\u0131 ile \u00d6rnek Mimari<\/a><\/li><li><a href=\"#Gercek_Dunya_Senaryolari_Hangi_Isi_Nereye_Koymali\"><span class=\"toc_number toc_depth_1\">8<\/span> Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Hangi \u0130\u015fi Nereye Koymal\u0131?<\/a><ul><li><a href=\"#1_WordPress_WooCommerce_Sitesi\"><span class=\"toc_number toc_depth_2\">8.1<\/span> 1. WordPress + WooCommerce Sitesi<\/a><\/li><li><a href=\"#2_Laravel_Ozel_PHP_Uygulamasi\"><span class=\"toc_number toc_depth_2\">8.2<\/span> 2. Laravel \/ \u00d6zel PHP Uygulamas\u0131<\/a><\/li><li><a href=\"#3_Statik_veya_Jamstack_Site\"><span class=\"toc_number toc_depth_2\">8.3<\/span> 3. Statik veya Jamstack Site<\/a><\/li><\/ul><\/li><li><a href=\"#Pratik_Ipuclari_ve_Sik_Yapilan_Hatalar\"><span class=\"toc_number toc_depth_1\">9<\/span> Pratik \u0130pu\u00e7lar\u0131 ve S\u0131k Yap\u0131lan Hatalar<\/a><ul><li><a href=\"#1_Ayni_Kurali_Birden_Fazla_Katmanda_Tekrarlamayin\"><span class=\"toc_number toc_depth_2\">9.1<\/span> 1. Ayn\u0131 Kural\u0131 Birden Fazla Katmanda Tekrarlamay\u0131n<\/a><\/li><li><a href=\"#2_Loglama_ve_Debug_Mekanizmasi_Kurun\"><span class=\"toc_number toc_depth_2\">9.2<\/span> 2. Loglama ve Debug Mekanizmas\u0131 Kurun<\/a><\/li><li><a href=\"#3_Kucukten_Baslayin_Kapsami_Yavas_Genisletin\"><span class=\"toc_number toc_depth_2\">9.3<\/span> 3. K\u00fc\u00e7\u00fckten Ba\u015flay\u0131n, Kapsam\u0131 Yava\u015f Geni\u015fletin<\/a><\/li><li><a href=\"#4_Versiyonlama_ve_Ortam_Ayrimi_Yapin\"><span class=\"toc_number toc_depth_2\">9.4<\/span> 4. Versiyonlama ve Ortam Ayr\u0131m\u0131 Yap\u0131n<\/a><\/li><\/ul><\/li><li><a href=\"#Sonuc_Edgei_Dogru_Kullanan_Origin_Rahat_Uyur\"><span class=\"toc_number toc_depth_1\">10<\/span> Sonu\u00e7: Edge\u2019i Do\u011fru Kullanan Origin Rahat Uyur<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Neden_Edgede_Kod_Calistirmaya_Ihtiyac_Duyuyoruz\">Neden Edge\u2019de Kod \u00c7al\u0131\u015ft\u0131rmaya \u0130htiya\u00e7 Duyuyoruz?<\/span><\/h2>\n<p>Son birka\u00e7 y\u0131lda bir\u00e7ok projede \u015funu net \u015fekilde g\u00f6rd\u00fck: Basit ama her istekte tekrar tekrar \u00e7al\u0131\u015fan mant\u0131klar\u0131 web sunucusunda (Nginx\/Apache\/PHP) ko\u015fturmak, hem performans hem de karma\u015f\u0131kl\u0131k a\u00e7\u0131s\u0131ndan gereksiz y\u00fck olu\u015fturuyor. \u00d6zellikle CDN kulland\u0131\u011f\u0131n\u0131z, trafik co\u011frafi olarak da\u011f\u0131ld\u0131\u011f\u0131 ve TTFB\u2019yi (Time to First Byte) olabildi\u011fince a\u015fa\u011f\u0131 \u00e7ekmek istedi\u011finiz senaryolarda, baz\u0131 i\u015fleri origin\u2019den al\u0131p a\u011f\u0131n kenar\u0131na, yani edge\u2019e ta\u015f\u0131mak b\u00fcy\u00fck fark yarat\u0131yor.<\/p>\n<p>Cloudflare Workers ve BunnyCDN Edge Rules tam da bu noktada devreye giriyor. URL rewrite, g\u00fcvenlik ba\u015fl\u0131klar\u0131, basit yetkilendirme, \u00fclke bazl\u0131 y\u00f6nlendirme, bak\u0131m sayfas\u0131 g\u00f6sterme gibi i\u015fleri edge seviyesinde \u00e7\u00f6zd\u00fc\u011f\u00fcn\u00fczde:<\/p>\n<ul>\n<li>Origin \u00fczerindeki CPU ve I\/O y\u00fck\u00fc azal\u0131yor, daha fazla trafi\u011fi ayn\u0131 sunucuyla kar\u015f\u0131layabiliyorsunuz.<\/li>\n<li>TTFB ve genel yan\u0131t s\u00fcreleri k\u0131sal\u0131yor.<\/li>\n<li>Sunucu konfig\u00fcrasyonunuz sadele\u015fiyor, Nginx\/Apache \u00fczerinde karma\u015f\u0131k kural y\u0131\u011f\u0131nlar\u0131ndan kurtuluyorsunuz.<\/li>\n<li>Yap\u0131land\u0131rmalar\u0131n\u0131z daha ta\u015f\u0131nabilir hale geliyor; hosting veya sunucu de\u011fi\u015ftirirken daha az k\u0131r\u0131lganl\u0131k ya\u015f\u0131yorsunuz.<\/li>\n<\/ul>\n<p>Bu yaz\u0131da DCHost ekibi olarak, Cloudflare Workers ve BunnyCDN Edge Rules kullanarak URL rewrite, g\u00fcvenlik ba\u015fl\u0131klar\u0131 ve basit i\u015f mant\u0131\u011f\u0131n\u0131 origin\u2019den edge\u2019e nas\u0131l ta\u015f\u0131yabilece\u011finizi ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Ayr\u0131ca edge kurallar\u0131n\u0131 CDN \u00f6nbellekleme, SEO ve g\u00fcvenlik politikalar\u0131 ile nas\u0131l uyumlu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekti\u011fini de pratik \u00f6rneklerle anlataca\u011f\u0131z.<\/p>\n<h2><span id=\"Cloudflare_Workers_ve_BunnyCDN_Edge_Rules_Temel_Farklari\">Cloudflare Workers ve BunnyCDN Edge Rules Temel Farklar\u0131<\/span><\/h2>\n<p>\u00d6nce iki yap\u0131n\u0131n ne oldu\u011funu netle\u015ftirelim; \u00e7\u00fcnk\u00fc mimariyi do\u011fru kurmak i\u00e7in hangi i\u015f y\u00fck\u00fcn\u00fc nereye koyman\u0131z gerekti\u011fini iyi bilmeniz gerekiyor.<\/p>\n<h3><span id=\"Cloudflare_Workers_Edgede_Gercek_Kod_Calistirma\">Cloudflare Workers: Edge\u2019de Ger\u00e7ek Kod \u00c7al\u0131\u015ft\u0131rma<\/span><\/h3>\n<p>Cloudflare Workers, Cloudflare POP noktalar\u0131nda \u00e7al\u0131\u015fan, V8 tabanl\u0131 izolasyonlar i\u00e7inde JavaScript (veya TypeScript\/derlenmi\u015f JS) ko\u015fturabildi\u011finiz bir edge compute ortam\u0131. Basit\u00e7e \u00f6zetlersek:<\/p>\n<ul>\n<li><strong>Tam programlama g\u00fcc\u00fc<\/strong>: Ko\u015fullu mant\u0131k, d\u00f6ng\u00fcler, harici API \u00e7a\u011fr\u0131lar\u0131, regex tabanl\u0131 routing, A\/B test, hatta k\u00fc\u00e7\u00fck API u\u00e7lar\u0131 bile yazabilirsiniz.<\/li>\n<li><strong>Request\/response \u00fczerinde tam kontrol<\/strong>: Gelen iste\u011fi yakalar, URL\u2019yi de\u011fi\u015ftirir, headere dokunur, gerekirse hi\u00e7 origin\u2019e gitmeden yan\u0131t \u00fcretebilirsiniz.<\/li>\n<li><strong>Da\u011f\u0131t\u0131k \u00e7al\u0131\u015f\u0131r<\/strong>: Kodunuz, ziyaret\u00e7iye en yak\u0131n edge noktas\u0131nda ko\u015fturulur; bu da \u00f6zellikle global trafi\u011fi olan sitelerde hissedilir h\u0131z kazanc\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>DCHost taraf\u0131nda \u00f6zellikle SPF kay\u0131tlar\u0131n\u0131 y\u00f6netmek, dinamik y\u00f6nlendirme ve g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 merkezi bir yerde tutmak i\u00e7in Cloudflare Workers\u2019\u0131 s\u0131k\u00e7a kullan\u0131yoruz. \u00d6rne\u011fin <a href='https:\/\/www.dchost.com\/blog\/spf-flattening-ile-10-lookup-duvarini-nasil-asarsin-ci-cd-ve-workers-ile-yasayan-spf\/'>SPF flattening i\u00e7in Cloudflare Workers kulland\u0131\u011f\u0131m\u0131z yaz\u0131da<\/a> benzer bir yakla\u015f\u0131m\u0131 ayr\u0131nt\u0131l\u0131 olarak anlatt\u0131k.<\/p>\n<h3><span id=\"BunnyCDN_Edge_Rules_Kosul_Aksiyon_Motoru\">BunnyCDN Edge Rules: Ko\u015ful + Aksiyon Motoru<\/span><\/h3>\n<p>BunnyCDN Edge Rules ise JavaScript \u00e7al\u0131\u015ft\u0131rm\u0131yor; onun yerine \u201c\u015fu ko\u015ful sa\u011flan\u0131yorsa bu aksiyonu uygula\u201d mant\u0131\u011f\u0131nda bir kural motoru sunuyor. \u00d6rnek aksiyonlar:<\/p>\n<ul>\n<li>URL rewrite veya redirect<\/li>\n<li>Response header ekleme\/de\u011fi\u015ftirme<\/li>\n<li>Cache davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftirme (no cache, farkl\u0131 TTL, cache-key de\u011fi\u015ftirme vb.)<\/li>\n<li>Belirli \u00fclkelerden gelen isteklere farkl\u0131 davranmak<\/li>\n<li>Belirli user-agent\u2019lar\u0131 engellemek veya farkl\u0131 yan\u0131t d\u00f6nd\u00fcrmek<\/li>\n<\/ul>\n<p>Yani BunnyCDN Edge Rules, Nginx\u2019teki \u201cif + rewrite + add_header\u201d kombinasyonuna benziyor; ama bunu global edge katman\u0131nda, g\u00f6rsel bir aray\u00fczle y\u00f6netmenizi sa\u011fl\u0131yor. Karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131 de\u011fil, basit ve tekrarlayan operasyonel kurallar i\u00e7in ideal.<\/p>\n<h2><span id=\"Originden_Edgee_Tasinabilecek_Isler\">Origin\u2019den Edge\u2019e Ta\u015f\u0131nabilecek \u0130\u015fler<\/span><\/h2>\n<p>Her \u015feyi edge\u2019e ta\u015f\u0131mak do\u011fru de\u011fil; ama baz\u0131 kal\u0131plar neredeyse her projede tekrar ediyor ve bunlar edge i\u00e7in bi\u00e7ilmi\u015f kaftan:<\/p>\n<h3><span id=\"1_URL_Rewrite_ve_Routing\">1. URL Rewrite ve Routing<\/span><\/h3>\n<ul>\n<li>Eski URL \u015femas\u0131ndan yeni yap\u0131ya ge\u00e7erken 301\/302 y\u00f6nlendirmeler<\/li>\n<li>Single Page Application (SPA) i\u00e7in t\u00fcm yollar\u0131 \/index.html veya \/app.html\u2019e d\u00fc\u015f\u00fcrmek<\/li>\n<li>Backend framework\u2019\u00fcn\u00fcz\u00fcn (Laravel, Symfony, Ruby vb.) URL yap\u0131s\u0131n\u0131 sade g\u00f6stermek i\u00e7in \/urun\/slug \u2192 \/index.php?route=product&amp;slug=slug gibi d\u00f6n\u00fc\u015f\u00fcmler<\/li>\n<li>Co\u011frafi veya dil bazl\u0131 y\u00f6nlendirme (tr.example.com, en.example.com vb.)<\/li>\n<\/ul>\n<p>Bu kurallar klasik olarak Nginx\/Apache config i\u00e7inde tutulur. Ancak CDN ile \u00e7al\u0131\u015f\u0131rken, bu rewrite\u2019lar\u0131 edge\u2019de yapmak \u00e7o\u011fu zaman daha mant\u0131kl\u0131d\u0131r.<\/p>\n<h3><span id=\"2_Guvenlik_Basliklari\">2. G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/span><\/h3>\n<p>\u00d6nemli HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131n b\u00fcy\u00fck k\u0131sm\u0131, uygulama kodunuzdan ba\u011f\u0131ms\u0131zd\u0131r ve tamamen \u201cpolicy\u201d niteli\u011findedir:<\/p>\n<ul>\n<li>Strict-Transport-Security (HSTS)<\/li>\n<li>Content-Security-Policy (CSP)<\/li>\n<li>X-Frame-Options<\/li>\n<li>X-Content-Type-Options<\/li>\n<li>Referrer-Policy<\/li>\n<li>Permissions-Policy<\/li>\n<\/ul>\n<p>Bunlar\u0131 her sunucuda ayr\u0131 ayr\u0131 konfig\u00fcre etmek yerine, edge seviyesinde standartla\u015ft\u0131rmak \u00e7o\u011fu zaman daha sa\u011fl\u0131kl\u0131d\u0131r. Detaylar\u0131 bizim <a href='https:\/\/www.dchost.com\/blog\/http-guvenlik-basliklari-rehberi-hsts-csp-x-frame-options-ve-referrer-policy-dogru-nasil-kurulur\/'>HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131 rehberimizde<\/a> uzun uzun anlatt\u0131k; burada \u00f6zellikle Workers ve Edge Rules \u00fczerinden pratik \u00f6rneklere odaklanaca\u011f\u0131z.<\/p>\n<h3><span id=\"3_Basit_Kosullu_Mantik\">3. Basit Ko\u015fullu Mant\u0131k<\/span><\/h3>\n<p>A\u015fa\u011f\u0131daki gibi i\u015fler i\u00e7in tam te\u015fekk\u00fcll\u00fc backend koduna ihtiyac\u0131n\u0131z yok:<\/p>\n<ul>\n<li>Belirli \u00fclkelerden gelen trafi\u011fi farkl\u0131 bir alan ad\u0131na y\u00f6nlendirmek<\/li>\n<li>Bak\u0131m modundaysan\u0131z t\u00fcm isteklere statik bir bak\u0131m sayfas\u0131 d\u00f6nd\u00fcrmek<\/li>\n<li>Basit bir IP kara listesi uygulamak<\/li>\n<li>A\/B testinde trafi\u011fin %10\u2019unu yeni sayfa tasar\u0131m\u0131na g\u00f6ndermek<\/li>\n<\/ul>\n<p>Bu tarz mant\u0131klar, ya tamamen Workers ile kod seviyesinde \u00e7\u00f6z\u00fclebilir ya da yeterince basitse BunnyCDN Edge Rules ile ko\u015ful\/aksiyon olarak tan\u0131mlanabilir.<\/p>\n<h2><span id=\"Cloudflare_Workers_ile_URL_Rewrite_ve_Guvenlik_Basliklari\">Cloudflare Workers ile URL Rewrite ve G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/span><\/h2>\n<p>Cloudflare Workers taraf\u0131nda temel yap\u0131 \u015fu \u015fekilde ilerler:<\/p>\n<ol>\n<li>Bir Worker olu\u015fturursunuz.<\/li>\n<li>\u0130lgili domain ve path i\u00e7in bir Route tan\u0131mlars\u0131n\u0131z (\u00f6rne\u011fin example.com\/*).<\/li>\n<li>Worker kodu, bu route\u2019a gelen her iste\u011fi dinler, gerekirse iste\u011fi de\u011fi\u015ftirir, origin\u2019e veya ba\u015fka bir hedefe iletir, yan\u0131t\u0131 al\u0131r ve son kullan\u0131c\u0131ya d\u00f6ner.<\/li>\n<\/ol>\n<h3><span id=\"Workers_ile_Basit_URL_Rewrite_Ornegi\">Workers ile Basit URL Rewrite \u00d6rne\u011fi<\/span><\/h3>\n<p>Basit bir senaryo \u00fczerinden gidelim: \/blog\/* isteklerini origin\u2019de \/index.php?route=blog&amp;slug=&#8230; \u015feklinde \u00e7al\u0131\u015fan bir PHP uygulamas\u0131na y\u00f6nlendirmek istiyorsunuz; ama URL\u2019lerinizin temiz ve SEO dostu g\u00f6r\u00fcnmesini istiyorsunuz.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">addEventListener('fetch', event =&gt; {  event.respondWith(handleRequest(event.request));});async function handleRequest(request) {  const url = new URL(request.url);  \/\/ \/blog\/slug yap\u0131s\u0131n\u0131 \/index.php?route=blog&amp;slug=slug \u015fekline \u00e7evir  if (url.pathname.startsWith('\/blog\/')) {    const slug = url.pathname.replace('\/blog\/', '').replace(\/\/$\/, '');    url.pathname = '\/index.php';    url.searchParams.set('route', 'blog');    url.searchParams.set('slug', slug);  }  const newRequest = new Request(url.toString(), request);  const response = await fetch(newRequest);  return response;}<\/code><\/pre>\n<p>Bu sayede:<\/p>\n<ul>\n<li>Kullan\u0131c\u0131 taraf\u0131nda temiz URL\u2019ler (\/blog\/yeni-urunler) kal\u0131r.<\/li>\n<li>Origin \u00fczerinde ekstra rewrite kural\u0131 yazman\u0131z gerekmez.<\/li>\n<li>Gelecekte origin platformunuzu de\u011fi\u015ftirdi\u011finizde, sadece Worker\u2019daki mapping\u2019i g\u00fcncellemeniz yeterli olur.<\/li>\n<\/ul>\n<h3><span id=\"Workers_ile_Guvenlik_Basliklari_Ekleme\">Workers ile G\u00fcvenlik Ba\u015fl\u0131klar\u0131 Ekleme<\/span><\/h3>\n<p>Ayn\u0131 Worker i\u00e7inde, origin\u2019den gelen response \u00fczerine g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 da ekleyebilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">async function handleRequest(request) {  const url = new URL(request.url);  \/\/ ... URL rewrite mant\u0131\u011f\u0131n\u0131z burada olabilir ...  const response = await fetch(url.toString(), request);  const newHeaders = new Headers(response.headers);  newHeaders.set('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');  newHeaders.set('X-Frame-Options', 'DENY');  newHeaders.set('X-Content-Type-Options', 'nosniff');  newHeaders.set('Referrer-Policy', 'strict-origin-when-cross-origin');  \/\/ \u00d6rnek, sade bir CSP  newHeaders.set('Content-Security-Policy', &quot;default-src 'self'; img-src 'self' https: data:; script-src 'self'; style-src 'self' 'unsafe-inline';&quot;);  return new Response(response.body, {    status: response.status,    statusText: response.statusText,    headers: newHeaders  });}<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m\u0131n en g\u00fczel taraf\u0131, HTTP g\u00fcvenlik politikalar\u0131n\u0131z\u0131 uygulama kodundan tamamen ba\u011f\u0131ms\u0131z hale getirmeniz. Framework de\u011fi\u015ftirseniz bile, Workers taraf\u0131nda birka\u00e7 sat\u0131rl\u0131k g\u00fcncelleme ile t\u00fcm site politikan\u0131z\u0131 de\u011fi\u015ftirebiliyorsunuz.<\/p>\n<h3><span id=\"Workers_ile_Basit_Kosullu_Mantik_Ulke_Bazli_Yonlendirme\">Workers ile Basit Ko\u015fullu Mant\u0131k (\u00dclke Bazl\u0131 Y\u00f6nlendirme)<\/span><\/h3>\n<p>Cloudflare, iste\u011fin geldi\u011fi \u00fclkeyi CF-IPCountry header\u2019\u0131 ile Worker\u2019a iletir. Bunu kullanarak \u00f6rne\u011fin T\u00fcrkiye\u2019den gelen kullan\u0131c\u0131lar\u0131 tr.example.com\u2019a y\u00f6nlendirebilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">async function handleRequest(request) {  const country = request.headers.get('CF-IPCountry');  const url = new URL(request.url);  if (country === 'TR' &amp;&amp; url.hostname === 'www.example.com') {    const target = 'https:\/\/tr.example.com' + url.pathname + url.search;    return Response.redirect(target, 302);  }  return fetch(request);}<\/code><\/pre>\n<p>Bu \u00f6rnekler, Workers ile neler yapabilece\u011finizin sadece k\u00fc\u00e7\u00fck bir k\u0131sm\u0131. Ama pratikte g\u00f6rd\u00fc\u011f\u00fcm\u00fcz \u015fu: URL rewrite + g\u00fcvenlik ba\u015fl\u0131klar\u0131 + birka\u00e7 ko\u015fullu mant\u0131k bile, origin konfig\u00fcrasyonunuzu ciddi \u015fekilde sadele\u015ftiriyor.<\/p>\n<h2><span id=\"BunnyCDN_Edge_Rules_ile_URL_Rewrite_ve_Guvenlik_Basliklari\">BunnyCDN Edge Rules ile URL Rewrite ve G\u00fcvenlik Ba\u015fl\u0131klar\u0131<\/span><\/h2>\n<p>Cloudflare Workers kadar esnek bir programlama ortam\u0131 sunmasa da, BunnyCDN Edge Rules bir\u00e7ok senaryo i\u00e7in fazlas\u0131yla yeterli. \u00d6zellikle \u201cko\u015ful + aksiyon\u201d \u015feklinde ifade edilebilen i\u015fleri, hi\u00e7 kod yazmadan edge\u2019e ta\u015f\u0131yabiliyorsunuz.<\/p>\n<h3><span id=\"BunnyCDN_Edge_Rules_ile_URL_Rewrite_Ornegi\">BunnyCDN Edge Rules ile URL Rewrite \u00d6rne\u011fi<\/span><\/h3>\n<p>Diyelim ki WordPress siteniz var ve \/eski-blog\/* URL\u2019lerini \/blog\/* alt\u0131na kal\u0131c\u0131 y\u00f6nlendirmek istiyorsunuz. Bunu Nginx \u00fczerinde 301 redirect ile \u00e7\u00f6zmek yerine, BunnyCDN Edge Rules ile \u015f\u00f6yle yapabilirsiniz:<\/p>\n<ol>\n<li>BunnyCDN panelinde ilgili Pull Zone\u2019a girin.<\/li>\n<li>Edge Rules b\u00f6l\u00fcm\u00fcnden yeni bir kural olu\u015fturun.<\/li>\n<li>Ko\u015ful (Condition) olarak: URL Path <strong>starts with<\/strong> \/eski-blog\/ se\u00e7in.<\/li>\n<li>Aksiyon (Action) olarak: <strong>Redirect<\/strong> (301) + hedef URL olarak \/blog\/%path% kurgulay\u0131n.<\/li>\n<\/ol>\n<p>Daha geli\u015fmi\u015f bir senaryoda, rewrite aksiyonu kullanarak istek <em>origin\u2019e gitmeden<\/em> URL\u2019yi \/index.php?route=&#8230; formuna d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. B\u00f6ylece Nginx\/Apache konfig\u00fcrasyonunuz neredeyse sadece statik dosya ve PHP FPM proxy ayarlar\u0131ndan ibaret kal\u0131r.<\/p>\n<h3><span id=\"BunnyCDN_ile_Guvenlik_Basligi_Ekleme\">BunnyCDN ile G\u00fcvenlik Ba\u015fl\u0131\u011f\u0131 Ekleme<\/span><\/h3>\n<p>Edge Rules\u2019un en pratik kullan\u0131m alanlar\u0131ndan biri, response header eklemek\/de\u011fi\u015ftirmek. \u00d6rne\u011fin t\u00fcm HTML yan\u0131tlar\u0131na a\u015fa\u011f\u0131daki g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 eklemek isteyin:<\/p>\n<ul>\n<li>Strict-Transport-Security<\/li>\n<li>X-Frame-Options<\/li>\n<li>Referrer-Policy<\/li>\n<\/ul>\n<p>Bunun i\u00e7in:<\/p>\n<ol>\n<li>Tek bir Edge Rule olu\u015fturun.<\/li>\n<li>Condition: Response Content-Type <strong>contains<\/strong> text\/html.<\/li>\n<li>Action: <strong>Set Response Header<\/strong> ile a\u015fa\u011f\u0131daki ba\u015fl\u0131klar\u0131 tan\u0131mlay\u0131n:<\/li>\n<\/ol>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadX-Frame-Options: DENYReferrer-Policy: strict-origin-when-cross-origin<\/code><\/pre>\n<p>CSP gibi daha kompleks ba\u015fl\u0131klar i\u00e7in de ayn\u0131 yakla\u015f\u0131m ge\u00e7erli; ancak policy\u2019yi dikkatli tasarlaman\u0131z gerekiyor. Bunun i\u00e7in \u00f6ncesinde <a href='https:\/\/www.dchost.com\/blog\/http-guvenlik-basliklari-rehberi-hsts-csp-x-frame-options-ve-referrer-policy-dogru-nasil-kurulur\/'>HTTP g\u00fcvenlik ba\u015fl\u0131klar\u0131 rehberindeki CSP b\u00f6l\u00fcm\u00fcn\u00fc<\/a> okuman\u0131z\u0131 \u00f6neririz.<\/p>\n<h3><span id=\"Edge_Rules_ile_Cache_Davranisini_Ayarlamak\">Edge Rules ile Cache Davran\u0131\u015f\u0131n\u0131 Ayarlamak<\/span><\/h3>\n<p>Edge kurallar\u0131n\u0131 do\u011fru cache politikas\u0131 ile birlikte kullanmak en az URL rewrite kadar kritik. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>\/api\/* isteklerini asla cache\u2019lememek<\/li>\n<li>\/assets\/* alt\u0131nda agresif cache (1 ay) kullanmak<\/li>\n<li>\/blog\/* i\u00e7in daha k\u0131sa TTL (\u00f6rne\u011fin 10 dakika) verip <em>stale-while-revalidate<\/em> benzeri davran\u0131\u015f elde etmek<\/li>\n<\/ul>\n<p>BunnyCDN\u2019de Edge Rules ile path bazl\u0131 cache TTL belirleyebilir, hatta baz\u0131 header\u2019lar\u0131 (\u00f6rne\u011fin Authorization) g\u00f6rmezden gelerek cache oran\u0131n\u0131 art\u0131rabilirsiniz. Biz bu tip optimizasyonlar\u0131n mant\u0131\u011f\u0131n\u0131 <a href='https:\/\/www.dchost.com\/blog\/cdn-onbellekleme-cache-control-ve-edge-kurallari-wordpress-ve-woocommercede-tam-isabet-ayarlar\/'>CDN \u00f6nbellekleme ve edge kurallar\u0131 rehberimizde<\/a> etrafl\u0131ca anlatt\u0131k; burada sadece Workers\/Edge Rules ile nas\u0131l birle\u015fti\u011fini vurguluyoruz.<\/p>\n<h2><span id=\"Edge_Kurallarini_SEO_ve_CDN_Onbellekleme_ile_Uyumlu_Kullanmak\">Edge Kurallar\u0131n\u0131 SEO ve CDN \u00d6nbellekleme ile Uyumlu Kullanmak<\/span><\/h2>\n<p>URL rewrite ve g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 edge\u2019e ta\u015f\u0131d\u0131\u011f\u0131n\u0131zda, SEO ve cache davran\u0131\u015f\u0131 a\u00e7\u0131s\u0131ndan dikkat etmeniz gereken birka\u00e7 kritik nokta var.<\/p>\n<h3><span id=\"301302_Yonlendirme_Kurallari\">301\/302 Y\u00f6nlendirme Kurallar\u0131<\/span><\/h3>\n<p>Eski URL\u2019den yeni URL\u2019ye kal\u0131c\u0131 ge\u00e7i\u015f yap\u0131yorsan\u0131z:<\/p>\n<ul>\n<li>M\u00fcmk\u00fcnse 301 (permanent redirect) kullan\u0131n.<\/li>\n<li>Y\u00f6nlendirme zinciri olu\u015fturmamaya \u00e7al\u0131\u015f\u0131n (eski \u2192 ara \u2192 yeni yerine direkt eski \u2192 yeni).<\/li>\n<li>Hem Cloudflare Workers hem BunnyCDN Edge Rules taraf\u0131nda ayn\u0131 y\u00f6nlendirmeyi tekrarlamay\u0131n; aksi halde redirect loop olu\u015fabilir.<\/li>\n<\/ul>\n<p>\u00d6rne\u011fin dil y\u00f6nlendirmesi yap\u0131yorsan\u0131z, taray\u0131c\u0131 diline g\u00f6re otomatik redirect yerine, genellikle ilk ziyarette banner veya kullan\u0131c\u0131ya se\u00e7enek sunmak daha sa\u011fl\u0131kl\u0131. Aksi halde arama motoru botlar\u0131 yanl\u0131\u015f varyanta kilitlenebilir.<\/p>\n<h3><span id=\"Canonical_ve_Ic_Linkler\">Canonical ve \u0130\u00e7 Linkler<\/span><\/h3>\n<p>Edge\u2019de yapt\u0131\u011f\u0131n\u0131z rewrite, uygulama taraf\u0131ndaki URL mant\u0131\u011f\u0131yla \u00e7eli\u015fmemeli. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Kullan\u0131c\u0131 \/blog\/yazi-1 g\u00f6r\u00fcyor, ama uygulama canonical\u2019\u0131 \/index.php?route=blog&amp;id=1 olarak set ediyorsa SEO taraf\u0131nda kar\u0131\u015f\u0131kl\u0131k \u00e7\u0131kar.<\/li>\n<li>Edge\u2019de \/eski-urun \u2192 \/urun\/yeni-urun redirect yaparken, sayfa i\u00e7inde hala \/eski-urun linklerini kullan\u0131yorsan\u0131z, botlar her taramada ekstra y\u00f6nlendirme ya\u015far.<\/li>\n<\/ul>\n<p>Bu nedenle, edge kurallar\u0131n\u0131 uygularken uygulama taraf\u0131ndaki canonical, sitemap ve i\u00e7 link yap\u0131s\u0131n\u0131 da g\u00fcncellemek \u015fart.<\/p>\n<h3><span id=\"stale-while-revalidate_ile_Birlikte_Kullanim\">stale-while-revalidate ile Birlikte Kullan\u0131m<\/span><\/h3>\n<p>Cloudflare ve baz\u0131 CDN\u2019ler, Cache-Control direktifleri i\u00e7inde <code>stale-while-revalidate<\/code> ve <code>stale-if-error<\/code> gibi \u00f6zellikleri destekliyor. Biz bu konuyu <a href='https:\/\/www.dchost.com\/blog\/kesinti-caninizi-sikmasin-stale-while-revalidate-ve-stale-if-error-nasil-hayat-kurtarir\/'>stale-while-revalidate direktiflerini anlatt\u0131\u011f\u0131m\u0131z yaz\u0131da<\/a> detayland\u0131rm\u0131\u015ft\u0131k.<\/p>\n<p>\u00d6nemli nokta \u015fu: URL rewrite\u2019\u0131 edge\u2019de yapt\u0131\u011f\u0131n\u0131zda, cache key ve varyant mant\u0131\u011f\u0131n\u0131z\u0131 da buna g\u00f6re kurgulaman\u0131z gerekiyor. \u00d6rne\u011fin Workers ile \/blog\/slug \u2192 \/index.php?route=blog&amp;slug=slug d\u00f6n\u00fc\u015f\u00fcm\u00fcn\u00fc yap\u0131yorsan\u0131z, CDN taraf\u0131nda cache key\u2019i <em>kullan\u0131c\u0131n\u0131n g\u00f6rd\u00fc\u011f\u00fc URL\u2019ye<\/em> g\u00f6re ayarlamak genellikle daha mant\u0131kl\u0131. Aksi halde cache\u2019iniz teknik query string\u2019e g\u00f6re da\u011f\u0131l\u0131r, hit oran\u0131n\u0131z d\u00fc\u015fer.<\/p>\n<h2><span id=\"DCHost_Origin_Altyapisi_ile_Ornek_Mimari\">DCHost Origin Altyap\u0131s\u0131 ile \u00d6rnek Mimari<\/span><\/h2>\n<p>Edge\u2019de ne kadar \u00e7ok i\u015fi \u00e7\u00f6zerseniz \u00e7\u00f6z\u00fcn, g\u00fc\u00e7l\u00fc ve sa\u011fl\u0131kl\u0131 bir origin altyap\u0131s\u0131na ihtiyac\u0131n\u0131z var. DCHost taraf\u0131nda tipik olarak \u015fu mimariyi \u00f6neriyoruz:<\/p>\n<ul>\n<li><strong>Origin olarak DCHost <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a><\/strong>: Uygulama (PHP\/Laravel, WordPress, Node.js vb.) burada \u00e7al\u0131\u015f\u0131yor.<\/li>\n<li><strong>\u00d6n tarafta Cloudflare veya BunnyCDN<\/strong>: T\u00fcm statik i\u00e7erik ve b\u00fcy\u00fck \u00f6l\u00e7\u00fcde HTML yan\u0131tlar\u0131 cache\u2019leniyor.<\/li>\n<li><strong>Edge\u2019de Workers \/ Edge Rules<\/strong>: URL rewrite, g\u00fcvenlik ba\u015fl\u0131klar\u0131, basit mant\u0131k, \u00fclke bazl\u0131 y\u00f6nlendirme gibi i\u015fler burada \u00e7\u00f6z\u00fcl\u00fcyor.<\/li>\n<\/ul>\n<p>Global trafi\u011fi olan projelerde ise bunu bir ad\u0131m ileri ta\u015f\u0131y\u0131p \u00e7ok b\u00f6lgeli mimariler kurmak m\u00fcmk\u00fcn. \u00d6rne\u011fin trafi\u011finizi Avrupa ve Amerika\u2019daki iki farkl\u0131 DCHost origin k\u00fcmesine da\u011f\u0131t\u0131p, DNS veya CDN \u00fczerinden co\u011frafi y\u00f6nlendirme yapabilirsiniz. Bu yakla\u015f\u0131m\u0131 <a href='https:\/\/www.dchost.com\/blog\/geodns-ve-cok-bolgeli-hosting-mimarisi-ile-global-ziyaretcilere-yakinlasmak\/'>GeoDNS ve \u00e7ok b\u00f6lgeli hosting mimarisi<\/a> yaz\u0131m\u0131zda detayland\u0131rd\u0131k.<\/p>\n<p>Edge\u2019de kurallar\u0131 do\u011fru tasarlad\u0131\u011f\u0131n\u0131zda, yeni bir DCHost VPS\u2019e ge\u00e7i\u015f, \u00f6l\u00e7ek b\u00fcy\u00fctme veya veritaban\u0131n\u0131 ayr\u0131 sunucuya ta\u015f\u0131ma gibi operasyonlar \u00e7ok daha az riskle yap\u0131labiliyor. \u00c7\u00fcnk\u00fc y\u00f6nlendirme ve g\u00fcvenlik politikalar\u0131n\u0131z\u0131n b\u00fcy\u00fck k\u0131sm\u0131 art\u0131k origin konfig\u00fcrasyonuna de\u011fil, edge katman\u0131na ba\u011fl\u0131.<\/p>\n<h2><span id=\"Gercek_Dunya_Senaryolari_Hangi_Isi_Nereye_Koymali\">Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Hangi \u0130\u015fi Nereye Koymal\u0131?<\/span><\/h2>\n<p>Sahada en s\u0131k kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z senaryolar \u00fczerinden hangi i\u015fi Workers\u2019a, hangisini Edge Rules\u2019a, hangisini origin\u2019e b\u0131rakman\u0131z gerekti\u011fini \u00f6zetleyelim.<\/p>\n<h3><span id=\"1_WordPress_WooCommerce_Sitesi\">1. WordPress + WooCommerce Sitesi<\/span><\/h3>\n<ul>\n<li><strong>Origin (DCHost VPS)<\/strong>: WordPress, WooCommerce, PHP-FPM, MySQL\/MariaDB.<\/li>\n<li><strong>Cloudflare\/BunnyCDN<\/strong>: Statik dosyalar, m\u00fcmk\u00fcnse \u00e7o\u011fu HTML i\u00e7in cache.<\/li>\n<li><strong>Edge kurallar\u0131<\/strong>:<\/li>\n<\/ul>\n<ul>\n<li>WooCommerce sepet\/\u00f6demeyi cache d\u0131\u015f\u0131 b\u0131rakacak path bazl\u0131 kurallar<\/li>\n<li>\/wp-admin, \/wp-login.php gibi yollara IP\/\u00fclke bazl\u0131 eri\u015fim k\u0131s\u0131tlamas\u0131<\/li>\n<li>G\u00fcvenlik ba\u015fl\u0131klar\u0131 (HSTS, X-Frame-Options, Referrer-Policy vb.)<\/li>\n<li>\/eski-blog\/* \u2192 \/blog\/* y\u00f6nlendirmeleri<\/li>\n<\/ul>\n<p>B\u00f6yle bir yap\u0131da, hem performans hem de g\u00fcvenlik kazan\u0131yorsunuz. WordPress taraf\u0131ndaki server-side ayarlar\u0131n detaylar\u0131n\u0131 <a href='https:\/\/www.dchost.com\/blog\/wordpress-icin-sunucu-tarafi-optimizasyon-php-fpm-opcache-redis-ve-mysql-ile-neyi-ne-zaman-nasil-ayarlamalisin\/'>WordPress i\u00e7in sunucu taraf\u0131 optimizasyon rehberimizde<\/a> ayr\u0131ca anlatt\u0131k; edge kurallar\u0131 bu optimizasyonlar\u0131 tamamlayan katman gibi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h3><span id=\"2_Laravel_Ozel_PHP_Uygulamasi\">2. Laravel \/ \u00d6zel PHP Uygulamas\u0131<\/span><\/h3>\n<ul>\n<li><strong>Origin<\/strong>: T\u00fcm routing Laravel \u00fczerinde.<\/li>\n<li><strong>Workers<\/strong>:<\/li>\n<\/ul>\n<ul>\n<li>Bak\u0131m modunda t\u00fcm trafi\u011fi statik bak\u0131m sayfas\u0131na \u00e7evirmek<\/li>\n<li>Webhook\u2019lar i\u00e7in IP beyaz liste\/karaliste uygulamak<\/li>\n<li>Basit bir rate limiting (daha geli\u015fmi\u015f senaryolar i\u00e7in Nginx\/Redis tabanl\u0131 \u00e7\u00f6z\u00fcmler daha uygun olabilir)<\/li>\n<\/ul>\n<p>API ve mikroservisler i\u00e7in daha ince ayarl\u0131 trafik kontrol\u00fc gerekti\u011finde, edge katman\u0131n\u0131 Nginx\/Redis temelli oran s\u0131n\u0131rlama ile birle\u015ftirmek mant\u0131kl\u0131. Bunu da <a href='https:\/\/www.dchost.com\/blog\/api-ve-mikroservisler-icin-rate-limiting-stratejileri-nginx-cloudflare-ve-redis-ile-trafik-kontrolu\/'>API ve mikroservisler i\u00e7in rate limiting stratejileri<\/a> yaz\u0131m\u0131zda detayland\u0131rd\u0131k.<\/p>\n<h3><span id=\"3_Statik_veya_Jamstack_Site\">3. Statik veya Jamstack Site<\/span><\/h3>\n<p>Statik HTML\/Jamstack projelerde asl\u0131nda origin neredeyse \u201cbuild artifact deposu\u201d haline geliyor.<\/p>\n<ul>\n<li><strong>Origin<\/strong>: Sadece dosya sunumu.<\/li>\n<li><strong>Edge kurallar\u0131<\/strong>:<\/li>\n<\/ul>\n<ul>\n<li>Co\u011frafi y\u00f6nlendirme (tr.example.com, en.example.com gibi)<\/li>\n<li>G\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131n tamam\u0131<\/li>\n<li>\u00d6zel hata sayfalar\u0131 (404, 500) i\u00e7in rewrite<\/li>\n<\/ul>\n<p>Bu t\u00fcr yap\u0131larda edge mant\u0131\u011f\u0131n\u0131 iyi kurgulad\u0131\u011f\u0131n\u0131zda, origin kapasite gereksinimi \u00e7ok d\u00fc\u015f\u00fck kal\u0131yor; k\u00fc\u00e7\u00fck bir DCHost VPS bile olduk\u00e7a y\u00fcksek trafi\u011fi kald\u0131rabiliyor.<\/p>\n<h2><span id=\"Pratik_Ipuclari_ve_Sik_Yapilan_Hatalar\">Pratik \u0130pu\u00e7lar\u0131 ve S\u0131k Yap\u0131lan Hatalar<\/span><\/h2>\n<h3><span id=\"1_Ayni_Kurali_Birden_Fazla_Katmanda_Tekrarlamayin\">1. Ayn\u0131 Kural\u0131 Birden Fazla Katmanda Tekrarlamay\u0131n<\/span><\/h3>\n<p>En s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz hata: Ayn\u0131 redirect veya header, hem origin konfig\u00fcrasyonunda hem Cloudflare Page Rules\/Workers\u2019da hem de BunnyCDN Edge Rules\u2019ta tan\u0131mlanm\u0131\u015f oluyor. Sonu\u00e7:<\/p>\n<ul>\n<li>Redirect loop\u2019lar<\/li>\n<li>\u0130ki farkl\u0131 CSP\u2019nin \u00fcst \u00fcste binmesi ve beklenmedik JS hatalar\u0131<\/li>\n<li>HSTS\u2019nin iki farkl\u0131 yerde farkl\u0131 de\u011ferlerle set edilmesi<\/li>\n<\/ul>\n<p>\u00d6nerimiz: URL rewrite ve g\u00fcvenlik ba\u015fl\u0131klar\u0131 i\u00e7in <strong>tek bir katman\u0131 \u201ckaynak ger\u00e7ek\u201d olarak se\u00e7in<\/strong>. E\u011fer Workers veya Edge Rules kullan\u0131yorsan\u0131z, m\u00fcmk\u00fcn oldu\u011funca Nginx\/Apache i\u00e7indeki benzer kurallar\u0131 sadele\u015ftirin.<\/p>\n<h3><span id=\"2_Loglama_ve_Debug_Mekanizmasi_Kurun\">2. Loglama ve Debug Mekanizmas\u0131 Kurun<\/span><\/h3>\n<p>Edge\u2019de olan\u0131 g\u00f6rmek her zaman kolay de\u011fil. Cloudflare Workers taraf\u0131nda console.log \u00e7\u0131kt\u0131s\u0131n\u0131 Workers dashboard\u2019dan g\u00f6rebilirsiniz; ama \u00fcretim ortam\u0131nda daha sistematik yakla\u015fmak iyi olur. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>\u00d6nemli olaylar\u0131 (\u00f6rne\u011fin bloklanan IP, belirli bir redirect kural\u0131na giren istekler) k\u00fc\u00e7\u00fck bir log endpoint\u2019ine POST etmek<\/li>\n<li>Hata oranlar\u0131n\u0131 izlemek i\u00e7in basit metrikler \u00fcretmek<\/li>\n<\/ul>\n<p>DCHost \u00fczerinde kuraca\u011f\u0131n\u0131z merkezi log altyap\u0131s\u0131 (\u00f6rne\u011fin Loki\/Promtail) ile edge kaynakl\u0131 loglar\u0131 da bir araya getirip, u\u00e7tan uca g\u00f6r\u00fcn\u00fcrl\u00fck elde edebilirsiniz.<\/p>\n<h3><span id=\"3_Kucukten_Baslayin_Kapsami_Yavas_Genisletin\">3. K\u00fc\u00e7\u00fckten Ba\u015flay\u0131n, Kapsam\u0131 Yava\u015f Geni\u015fletin<\/span><\/h3>\n<p>Onlarca kural\u0131 bir gecede edge\u2019e ta\u015f\u0131maya \u00e7al\u0131\u015fmak, \u00fcretim ortam\u0131nda s\u00fcrprizlere yol a\u00e7\u0131yor. Bizim pratikte izledi\u011fimiz yol genelde \u015fu:<\/p>\n<ol>\n<li>\u00d6nce sadece g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 edge\u2019e ta\u015f\u0131y\u0131n.<\/li>\n<li>Sonra nispeten risksiz redirect\u2019lerle devam edin (\/eski-url \u2192 \/yeni-url gibi).<\/li>\n<li>En son uygulama davran\u0131\u015f\u0131n\u0131 etkileyen rewrite ve bak\u0131m modu gibi kurallar\u0131 ta\u015f\u0131y\u0131n.<\/li>\n<\/ol>\n<p>Her ad\u0131mda, HTTP status kodlar\u0131n\u0131 ve response header\u2019lar\u0131n\u0131 dikkatlice izleyerek ilerlemek, canl\u0131 sitede sorun \u00e7\u0131kma riskini ciddi \u015fekilde azalt\u0131yor.<\/p>\n<h3><span id=\"4_Versiyonlama_ve_Ortam_Ayrimi_Yapin\">4. Versiyonlama ve Ortam Ayr\u0131m\u0131 Yap\u0131n<\/span><\/h3>\n<p>\u00d6zellikle Cloudflare Workers taraf\u0131nda, staging ve prod i\u00e7in ayr\u0131 Workers ve ayr\u0131 Route\u2019lar kullanmak \u00e7ok faydal\u0131. Staging ortam\u0131n\u0131z i\u00e7in ayr\u0131 bir subdomain (\u00f6rne\u011fin staging.example.com) ve buna \u00f6zel edge kurallar\u0131 tan\u0131mlayarak, de\u011fi\u015fiklikleri ger\u00e7ek trafik almadan \u00f6nce test edebilirsiniz. Bu yakla\u015f\u0131m\u0131 genel olarak yay\u0131n s\u00fcre\u00e7leri i\u00e7in <a href='https:\/\/www.dchost.com\/blog\/gelistirme-staging-canli-yolculugu-wordpress-ve-laravelde-sifir-kesinti-dagitim-nasil-gercekten-olur\/'>geli\u015ftirme\u2013staging\u2013canl\u0131 yolculu\u011fu rehberimizde<\/a> detayland\u0131rm\u0131\u015ft\u0131k; edge kurallar\u0131 da bu ak\u0131\u015f\u0131n bir par\u00e7as\u0131 olmal\u0131.<\/p>\n<h2><span id=\"Sonuc_Edgei_Dogru_Kullanan_Origin_Rahat_Uyur\">Sonu\u00e7: Edge\u2019i Do\u011fru Kullanan Origin Rahat Uyur<\/span><\/h2>\n<p>Cloudflare Workers ve BunnyCDN Edge Rules, do\u011fru kullan\u0131ld\u0131\u011f\u0131nda sadece birka\u00e7 milisaniyelik h\u0131z kazanc\u0131 de\u011fil, ayn\u0131 zamanda mimari sadelik ve operasyonel esneklik getiriyor. URL rewrite, g\u00fcvenlik ba\u015fl\u0131klar\u0131 ve basit mant\u0131\u011f\u0131 origin\u2019den edge\u2019e ta\u015f\u0131d\u0131\u011f\u0131n\u0131zda:<\/p>\n<ul>\n<li>Sunucu taraf\u0131 konfig\u00fcrasyonunuz sadele\u015fiyor.<\/li>\n<li>Hosting veya altyap\u0131 de\u011fi\u015fikliklerinde k\u0131r\u0131lgan noktalar azal\u0131yor.<\/li>\n<li>TTFB ve genel yan\u0131t s\u00fcresi iyile\u015fiyor; \u00f6zellikle global ziyaret\u00e7iler bunu hissediyor.<\/li>\n<li>G\u00fcvenlik politikalar\u0131n\u0131z\u0131 merkezi ve tutarl\u0131 \u015fekilde y\u00f6netebiliyorsunuz.<\/li>\n<\/ul>\n<p>DCHost olarak bizim \u00f6nerimiz, edge\u2019i \u201csihirli kutu\u201d gibi g\u00f6rmek yerine, bilin\u00e7li bir katman olarak ele alman\u0131z. Hangi kural neden edge\u2019de, neden origin\u2019de, neden uygulama kodunda sorusuna net cevaplar\u0131n\u0131z oldu\u011funda; \u00f6l\u00e7ek b\u00fcy\u00fctmek, yeni \u00f6zellikler eklemek ve g\u00fcvenlik politikalar\u0131n\u0131 g\u00fcncellemek \u00e7ok daha kolay hale geliyor.<\/p>\n<p>E\u011fer altyap\u0131n\u0131zda Cloudflare veya BunnyCDN kullan\u0131yor ve \u201c\u015fu karma\u015f\u0131k Nginx kurallar\u0131n\u0131 nas\u0131l sadele\u015ftiririm, \u015fu g\u00fcvenlik ba\u015fl\u0131klar\u0131n\u0131 tek yerden nas\u0131l y\u00f6netirim, bu basit y\u00f6nlendirmeleri nas\u0131l origin\u2019den kurtar\u0131r\u0131m\u201d diye d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z, DCHost ekibiyle ileti\u015fime ge\u00e7ebilirsiniz. Projenizin gereksinimlerine g\u00f6re uygun DCHost VPS veya dedicated sunucu altyap\u0131s\u0131n\u0131, edge taraf\u0131nda do\u011fru kurgulanm\u0131\u015f Workers\/Edge Rules katman\u0131yla birlikte tasarlay\u0131p, \u00fcretim ortam\u0131na ad\u0131m ad\u0131m ve g\u00fcvenli \u015fekilde ta\u015f\u0131man\u0131za yard\u0131mc\u0131 olabiliriz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Neden Edge\u2019de Kod \u00c7al\u0131\u015ft\u0131rmaya \u0130htiya\u00e7 Duyuyoruz?2 Cloudflare Workers ve BunnyCDN Edge Rules Temel Farklar\u01312.1 Cloudflare Workers: Edge\u2019de Ger\u00e7ek Kod \u00c7al\u0131\u015ft\u0131rma2.2 BunnyCDN Edge Rules: Ko\u015ful + Aksiyon Motoru3 Origin\u2019den Edge\u2019e Ta\u015f\u0131nabilecek \u0130\u015fler3.1 1. URL Rewrite ve Routing3.2 2. G\u00fcvenlik Ba\u015fl\u0131klar\u01313.3 3. Basit Ko\u015fullu Mant\u0131k4 Cloudflare Workers ile URL Rewrite ve G\u00fcvenlik Ba\u015fl\u0131klar\u01314.1 Workers ile Basit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3702,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3701","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3701"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3701\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3702"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3701"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3701"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}