{"id":32570,"date":"2025-10-23T10:41:05","date_gmt":"2025-10-23T07:41:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32570"},"modified":"2025-10-23T10:41:05","modified_gmt":"2025-10-23T07:41:05","slug":"apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/","title":{"rendered":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>\u0130nternet d\u00fcnyas\u0131nda web siteleri s\u00fcrekli bir de\u011fi\u015fim ve geli\u015fim i\u00e7indedir. URL yap\u0131lar\u0131 g\u00fcncellenebilir, sayfalar ta\u015f\u0131nabilir, alan adlar\u0131 de\u011fi\u015febilir veya tamamen yeni bir siteye ge\u00e7i\u015f yap\u0131labilir. Bu t\u00fcr durumlarda, eski veya ge\u00e7ersiz URL&#8217;lere eri\u015fmeye \u00e7al\u0131\u015fan kullan\u0131c\u0131lar\u0131n ve arama motoru botlar\u0131n\u0131n do\u011fru hedefe y\u00f6nlendirilmesi kritik \u00f6nem ta\u015f\u0131r. Y\u00f6nlendirmeler (redirects), bu ge\u00e7i\u015fleri sorunsuz hale getiren temel mekanizmalardan biridir. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f veya eksik y\u00f6nlendirmeler, hem kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir hem de arama motoru s\u0131ralamalar\u0131nda ciddi kay\u0131plara yol a\u00e7abilir.<\/p>\n<p>Apache HTTP Sunucusu, d\u00fcnya genelinde en yayg\u0131n kullan\u0131lan web sunucular\u0131ndan biridir ve y\u00f6nlendirmeleri y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc ve esnek ara\u00e7lar sunar. Bu makale, Apache \u00fczerinde hem ge\u00e7ici (302) hem de kal\u0131c\u0131 (301) y\u00f6nlendirmelerin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde ele alacakt\u0131r. <code>mod_alias<\/code> ve <code>mod_rewrite<\/code> mod\u00fcllerinin kullan\u0131m\u0131, farkl\u0131 senaryolar i\u00e7in \u00f6rnekler, en iyi uygulamalar ve hata ay\u0131klama ipu\u00e7lar\u0131 ile birlikte kapsaml\u0131 bir rehber sunmay\u0131 ama\u00e7lamaktad\u0131r.<\/p>\n<h3>Y\u00f6nlendirmeler Neden \u00d6nemlidir?<\/h3>\n<p>Y\u00f6nlendirmeler, bir web sitesinin sa\u011fl\u0131\u011f\u0131 ve performans\u0131 i\u00e7in vazge\u00e7ilmezdir. \u0130\u015fte ba\u015fl\u0131ca nedenleri:<\/p>\n<h4>SEO Etkisi<\/h4>\n<p>Arama motorlar\u0131, web sitelerini indekslerken URL&#8217;leri temel al\u0131r. Bir sayfan\u0131n URL&#8217;i de\u011fi\u015fti\u011finde, arama motorlar\u0131n\u0131n bu de\u011fi\u015fikli\u011fi anlamas\u0131 ve eski URL&#8217;in &#8220;link g\u00fcc\u00fcn\u00fc&#8221; (link equity) yeni URL&#8217;e aktarmas\u0131 gerekir. 301 Kal\u0131c\u0131 Y\u00f6nlendirme, arama motorlar\u0131na bir sayfan\u0131n kal\u0131c\u0131 olarak yeni bir konuma ta\u015f\u0131nd\u0131\u011f\u0131n\u0131 bildirir ve eski URL&#8217;in SEO de\u011ferinin b\u00fcy\u00fck bir k\u0131sm\u0131n\u0131n yeni URL&#8217;e aktar\u0131lmas\u0131n\u0131 sa\u011flar. Yanl\u0131\u015f y\u00f6nlendirmeler veya y\u00f6nlendirme eksikli\u011fi, arama motorlar\u0131n\u0131n eski sayfalar\u0131 &#8220;404 Sayfa Bulunamad\u0131&#8221; hatas\u0131 olarak g\u00f6rmesine neden olur, bu da s\u0131ralama kayb\u0131na ve indeksleme sorunlar\u0131na yol a\u00e7ar.<\/p>\n<h4>Kullan\u0131c\u0131 Deneyimi<\/h4>\n<p>Kullan\u0131c\u0131lar, bir web sitesine eski bir ba\u011flant\u0131dan, yer iminden veya arama motoru sonucundan ula\u015fmaya \u00e7al\u0131\u015ft\u0131klar\u0131nda, do\u011frudan do\u011fru sayfaya y\u00f6nlendirilmelidirler. Y\u00f6nlendirme olmamas\u0131 durumunda kar\u015f\u0131la\u015f\u0131lan &#8220;404 Sayfa Bulunamad\u0131&#8221; hatas\u0131, kullan\u0131c\u0131lar\u0131n hayal k\u0131r\u0131kl\u0131\u011f\u0131na u\u011framas\u0131na ve siteyi terk etmesine neden olabilir. Sorunsuz y\u00f6nlendirmeler, kullan\u0131c\u0131lar\u0131n istedikleri i\u00e7eri\u011fe h\u0131zl\u0131 ve verimli bir \u015fekilde ula\u015fmas\u0131n\u0131 sa\u011flayarak olumlu bir deneyim sunar.<\/p>\n<h4>Site Bak\u0131m\u0131 ve Yeniden Yap\u0131land\u0131rma<\/h4>\n<p>Web siteleri zamanla b\u00fcy\u00fcr, i\u00e7erik ve yap\u0131sal de\u011fi\u015fiklikler ge\u00e7irir. Bir sayfan\u0131n URL&#8217;i de\u011fi\u015fti\u011finde, bir b\u00f6l\u00fcm ba\u015fka bir yere ta\u015f\u0131nd\u0131\u011f\u0131nda veya t\u00fcm site yeni bir alan ad\u0131na ge\u00e7ti\u011finde y\u00f6nlendirmeler zorunludur. Bu, eski ba\u011flant\u0131lar\u0131n hala i\u015flevsel olmas\u0131n\u0131 ve ziyaret\u00e7ilerin kaybolmamas\u0131n\u0131 sa\u011flar. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli site ta\u015f\u0131ma veya mimari de\u011fi\u015fikliklerinde binlerce URL&#8217;in do\u011fru \u015fekilde y\u00f6nlendirilmesi gerekebilir.<\/p>\n<h4>G\u00fcvenlik<\/h4>\n<p>Baz\u0131 durumlarda, y\u00f6nlendirmeler g\u00fcvenlik amac\u0131yla da kullan\u0131labilir. \u00d6rne\u011fin, bir sitenin t\u00fcm trafi\u011fini HTTP&#8217;den HTTPS&#8217;ye y\u00f6nlendirmek, veri g\u00fcvenli\u011fini art\u0131rman\u0131n temel ad\u0131mlar\u0131ndan biridir. Bu t\u00fcr y\u00f6nlendirmeler, hassas bilgilerin \u015fifreli bir ba\u011flant\u0131 \u00fczerinden iletilmesini sa\u011flar.<\/p>\n<h3>Apache Y\u00f6nlendirme Mekanizmalar\u0131<\/h3>\n<p>Apache, y\u00f6nlendirmeleri y\u00f6netmek i\u00e7in ba\u015fl\u0131ca iki mod\u00fcl sunar: <code>mod_alias<\/code> ve <code>mod_rewrite<\/code>. Her ikisinin de kendine \u00f6zg\u00fc avantajlar\u0131 ve kullan\u0131m senaryolar\u0131 vard\u0131r.<\/p>\n<h4><code>mod_alias<\/code><\/h4>\n<p><code>mod_alias<\/code> mod\u00fcl\u00fc, basit ve do\u011frudan URL e\u015fle\u015ftirmeleri i\u00e7in tasarlanm\u0131\u015ft\u0131r. Genellikle daha az karma\u015f\u0131k y\u00f6nlendirme ihtiya\u00e7lar\u0131 i\u00e7in tercih edilir. <code>Redirect<\/code> ve <code>RedirectMatch<\/code> direktiflerini kullanarak \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>*   <strong><code>Redirect<\/code><\/strong>: Belirli bir URL&#8217;i veya bir dizini ba\u015fka bir konuma y\u00f6nlendirir. Kaynak URL&#8217;in tam e\u015fle\u015fmesini bekler ve alt\u0131ndaki t\u00fcm yollar\u0131 da hedef URL&#8217;e g\u00f6re yeniden yazar.<br \/>\n*   <strong><code>RedirectMatch<\/code><\/strong>: D\u00fczenli ifadeler (regular expressions) kullanarak daha esnek URL e\u015fle\u015ftirmeleri yapar. Bu, belirli desenlere uyan URL&#8217;leri y\u00f6nlendirmek i\u00e7in idealdir.<\/p>\n<p><code>mod_alias<\/code> genellikle <code>mod_rewrite<\/code>&#8216;a g\u00f6re daha az performans y\u00fck\u00fc getirir, \u00e7\u00fcnk\u00fc d\u00fczenli ifade i\u015fleme daha az karma\u015f\u0131kt\u0131r. Ancak, <code>mod_rewrite<\/code>&#8216;\u0131n sundu\u011fu ko\u015fullu mant\u0131k ve daha geli\u015fmi\u015f URL manip\u00fclasyon yeteneklerinden yoksundur.<\/p>\n<h4><code>mod_rewrite<\/code><\/h4>\n<p><code>mod_rewrite<\/code> mod\u00fcl\u00fc, Apache&#8217;nin en g\u00fc\u00e7l\u00fc ve esnek URL manip\u00fclasyon mod\u00fcl\u00fcd\u00fcr. D\u00fczenli ifadeler, ko\u015fullar ve bayraklar kullanarak neredeyse her t\u00fcrl\u00fc URL yeniden yazma ve y\u00f6nlendirme i\u015flemini ger\u00e7ekle\u015ftirebilir. \u00d6zellikle karma\u015f\u0131k y\u00f6nlendirme mant\u0131klar\u0131, alan ad\u0131 y\u00f6nlendirmeleri, HTTP&#8217;den HTTPS&#8217;ye ge\u00e7i\u015fler ve dinamik URL manip\u00fclasyonlar\u0131 i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<p>*   <strong><code>RewriteEngine<\/code><\/strong>: Mod\u00fcl\u00fcn etkinle\u015ftirilip etkinle\u015ftirilmedi\u011fini kontrol eder.<br \/>\n*   <strong><code>RewriteCond<\/code><\/strong>: <code>RewriteRule<\/code>&#8216;un uygulanmas\u0131 i\u00e7in bir veya daha fazla ko\u015ful tan\u0131mlar. \u00d6rne\u011fin, belirli bir HTTP ba\u015fl\u0131\u011f\u0131na, taray\u0131c\u0131ya veya ana bilgisayar ad\u0131na g\u00f6re y\u00f6nlendirme yap\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong><code>RewriteRule<\/code><\/strong>: As\u0131l yeniden yazma veya y\u00f6nlendirme kural\u0131n\u0131 tan\u0131mlar. Kaynak deseni, hedef URL&#8217;i ve \u00e7e\u015fitli bayraklar\u0131 (flags) i\u00e7erir.<\/p>\n<p><code>mod_rewrite<\/code>&#8216;\u0131n g\u00fcc\u00fc, ayn\u0131 zamanda karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 da beraberinde getirir. Yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda site performans\u0131n\u0131 etkileyebilir veya istenmeyen y\u00f6nlendirme d\u00f6ng\u00fclerine neden olabilir.<\/p>\n<h3>Ge\u00e7ici Y\u00f6nlendirmeler (302 Found)<\/h3>\n<p>302 &#8220;Found&#8221; (veya bazen &#8220;Moved Temporarily&#8221;) HTTP durum kodu, bir kayna\u011f\u0131n ge\u00e7ici olarak ba\u015fka bir adrese ta\u015f\u0131nd\u0131\u011f\u0131n\u0131 belirtir. Bu, arama motorlar\u0131na ve taray\u0131c\u0131lara, orijinal URL&#8217;in gelecekte tekrar kullan\u0131laca\u011f\u0131n\u0131 ve bu y\u00f6nlendirmenin kal\u0131c\u0131 olmad\u0131\u011f\u0131n\u0131 bildirir. Genellikle k\u0131sa s\u00fcreli bak\u0131m \u00e7al\u0131\u015fmalar\u0131, A\/B testi veya ge\u00e7ici promosyon sayfalar\u0131 gibi durumlarda kullan\u0131l\u0131r. Arama motorlar\u0131, 302 y\u00f6nlendirmelerin SEO de\u011ferini aktarmaz, bu y\u00fczden kal\u0131c\u0131 bir de\u011fi\u015fiklik i\u00e7in asla 302 kullan\u0131lmamal\u0131d\u0131r.<\/p>\n<h4><code>mod_alias<\/code> ile Ge\u00e7ici Y\u00f6nlendirme<\/h4>\n<p><code>mod_alias<\/code> mod\u00fcl\u00fc, basit ge\u00e7ici y\u00f6nlendirmeler i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h5>Basit Ge\u00e7ici Y\u00f6nlendirme<\/h5>\n<p>Belirli bir URL&#8217;i ge\u00e7ici olarak ba\u015fka bir URL&#8217;e y\u00f6nlendirmek i\u00e7in <code>Redirect<\/code> direktifi kullan\u0131l\u0131r:<\/p>\n<pre><code class=\"language-apache\">Redirect \/eski-sayfa.html http:\/\/www.example.com\/yeni-sayfa.html<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>\/eski-sayfa.html<\/code> adresine yap\u0131lan t\u00fcm istekler <code>http:\/\/www.example.com\/yeni-sayfa.html<\/code> adresine 302 durum koduyla y\u00f6nlendirilir. E\u011fer <code>\/eski-sayfa.html<\/code> bir dizin olsayd\u0131 (\u00f6rne\u011fin <code>\/eski-dizin\/<\/code>), bu dizin alt\u0131ndaki t\u00fcm dosyalar da <code>http:\/\/www.example.com\/yeni-dizin\/<\/code> alt\u0131na y\u00f6nlendirilirdi. \u00d6rne\u011fin, <code>\/eski-dizin\/resim.jpg<\/code> iste\u011fi <code>http:\/\/www.example.com\/yeni-dizin\/resim.jpg<\/code> adresine giderdi.<\/p>\n<p><code>Redirect<\/code> direktifi varsay\u0131lan olarak 302 (ge\u00e7ici) y\u00f6nlendirme yapar. E\u011fer 301 (kal\u0131c\u0131) bir y\u00f6nlendirme yapmak isterseniz, durumu a\u00e7\u0131k\u00e7a belirtmeniz gerekir:<\/p>\n<pre><code class=\"language-apache\">Redirect 302 \/eski-sayfa.html http:\/\/www.example.com\/yeni-sayfa.html<\/code><\/pre>\n<h5><code>RedirectMatch<\/code> ile Ge\u00e7ici Y\u00f6nlendirme<\/h5>\n<p>Daha esnek desen e\u015fle\u015ftirme i\u00e7in <code>RedirectMatch<\/code> kullan\u0131l\u0131r. Bu direktif d\u00fczenli ifadeleri destekler.<\/p>\n<pre><code class=\"language-apache\">RedirectMatch 302 ^\/eski-dizin\/(.*)$ http:\/\/www.example.com\/yeni-dizin\/$1<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n<em>   <code>^\/eski-dizin\/(.<\/em>)$<\/code>: <code>\/eski-dizin\/<\/code> ile ba\u015flayan herhangi bir URL&#8217;i e\u015fle\u015ftirir. <code>(.*)<\/code> parantez i\u00e7indeki ifade, dizin yolunun geri kalan\u0131n\u0131 yakalar.<br \/>\n*   <code>$1<\/code>: Yakalanan bu k\u0131sm\u0131 hedef URL&#8217;de yeniden kullan\u0131r.<br \/>\nB\u00f6ylece, <code>\/eski-dizin\/alt-dizin\/dosya.html<\/code> iste\u011fi <code>http:\/\/www.example.com\/yeni-dizin\/alt-dizin\/dosya.html<\/code> adresine 302 olarak y\u00f6nlendirilir.<\/p>\n<h4><code>mod_rewrite<\/code> ile Ge\u00e7ici Y\u00f6nlendirme<\/h4>\n<p><code>mod_rewrite<\/code> daha karma\u015f\u0131k ko\u015fullu ge\u00e7ici y\u00f6nlendirmeler i\u00e7in idealdir.<\/p>\n<h5>Basit <code>RewriteRule<\/code> ile Ge\u00e7ici Y\u00f6nlendirme<\/h5>\n<p><code>RewriteRule<\/code> direktifi, bayraklar (flags) kullanarak y\u00f6nlendirme tipini belirler. Ge\u00e7ici y\u00f6nlendirme i\u00e7in <code>[R=302]<\/code> veya sadece <code>[R]<\/code> bayra\u011f\u0131 kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteRule ^eski-sayfa.html$ http:\/\/www.example.com\/yeni-sayfa.html [R=302,L]<\/code><\/pre>\n<p>Bu \u00f6rnekte:<br \/>\n*   <code>RewriteEngine On<\/code>: <code>mod_rewrite<\/code> motorunu etkinle\u015ftirir.<br \/>\n*   <code>^eski-sayfa.html$<\/code>: \u0130stekteki URL&#8217;in tam olarak <code>eski-sayfa.html<\/code> olmas\u0131n\u0131 e\u015fle\u015ftirir.<br \/>\n*   <code>http:\/\/www.example.com\/yeni-sayfa.html<\/code>: Y\u00f6nlendirilecek hedef URL.<br \/>\n*   <code>[R=302,L]<\/code>: <code>R=302<\/code> bu kural\u0131n bir 302 (ge\u00e7ici) y\u00f6nlendirme oldu\u011funu belirtir. <code>L<\/code> (Last) bayra\u011f\u0131 ise bu kural e\u015fle\u015fti\u011finde ba\u015fka hi\u00e7bir <code>RewriteRule<\/code>&#8216;un uygulanmamas\u0131n\u0131 sa\u011flar.<\/p>\n<h5>Ko\u015fullu Ge\u00e7ici Y\u00f6nlendirme<\/h5>\n<p><code>RewriteCond<\/code> kullanarak belirli ko\u015fullar alt\u0131nda ge\u00e7ici y\u00f6nlendirmeler yapabilirsiniz. \u00d6rne\u011fin, sadece belirli bir taray\u0131c\u0131dan gelen istekleri y\u00f6nlendirmek:<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_USER_AGENT} \"MSIE [6-8]\"\nRewriteRule ^eski-sayfa.html$ http:\/\/www.example.com\/ie-uyarisi.html [R=302,L]<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>MSIE<\/code> taray\u0131c\u0131s\u0131n\u0131n 6, 7 veya 8. versiyonlar\u0131ndan gelen istekler <code>\/eski-sayfa.html<\/code> yerine <code>http:\/\/www.example.com\/ie-uyarisi.html<\/code> adresine ge\u00e7ici olarak y\u00f6nlendirilir. Di\u011fer taray\u0131c\u0131lardan gelen istekler <code>\/eski-sayfa.html<\/code> adresine normal \u015fekilde eri\u015fmeye devam eder.<\/p>\n<h3>Kal\u0131c\u0131 Y\u00f6nlendirmeler (301 Moved Permanently)<\/h3>\n<p>301 &#8220;Moved Permanently&#8221; HTTP durum kodu, bir kayna\u011f\u0131n kal\u0131c\u0131 olarak yeni bir adrese ta\u015f\u0131nd\u0131\u011f\u0131n\u0131 belirtir. Bu, arama motorlar\u0131 i\u00e7in \u00e7ok \u00f6nemlidir, \u00e7\u00fcnk\u00fc eski URL&#8217;in t\u00fcm SEO de\u011ferinin yeni URL&#8217;e aktar\u0131lmas\u0131n\u0131 sa\u011flar. Bir sayfan\u0131n URL&#8217;i de\u011fi\u015fti\u011finde, site ta\u015f\u0131nd\u0131\u011f\u0131nda veya bir dizin yap\u0131s\u0131 kal\u0131c\u0131 olarak de\u011fi\u015ftirildi\u011finde her zaman 301 y\u00f6nlendirme kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h4><code>mod_alias<\/code> ile Kal\u0131c\u0131 Y\u00f6nlendirme<\/h4>\n<p>Basit kal\u0131c\u0131 y\u00f6nlendirmeler i\u00e7in <code>mod_alias<\/code> yine iyi bir se\u00e7enektir.<\/p>\n<h5>Basit Kal\u0131c\u0131 Y\u00f6nlendirme<\/h5>\n<p><code>Redirect<\/code> direktifi ile kal\u0131c\u0131 y\u00f6nlendirme yapmak i\u00e7in <code>permanent<\/code> anahtar kelimesini veya <code>301<\/code> durum kodunu kullan\u0131r\u0131z:<\/p>\n<pre><code class=\"language-apache\">Redirect permanent \/eski-sayfa.html http:\/\/www.example.com\/yeni-sayfa.html<\/code><\/pre>\n<p>veya<\/p>\n<pre><code class=\"language-apache\">Redirect 301 \/eski-sayfa.html http:\/\/www.example.com\/yeni-sayfa.html<\/code><\/pre>\n<p>Bu, <code>\/eski-sayfa.html<\/code> adresine gelen t\u00fcm istekleri <code>http:\/\/www.example.com\/yeni-sayfa.html<\/code> adresine 301 durum koduyla y\u00f6nlendirecektir.<\/p>\n<h5><code>RedirectMatch<\/code> ile Kal\u0131c\u0131 Y\u00f6nlendirme<\/h5>\n<p>D\u00fczenli ifadelerle kal\u0131c\u0131 y\u00f6nlendirme i\u00e7in <code>RedirectMatch<\/code> kullan\u0131l\u0131r:<\/p>\n<pre><code class=\"language-apache\">RedirectMatch 301 ^\/eski-dizin\/(.*)$ http:\/\/www.example.com\/yeni-dizin\/$1<\/code><\/pre>\n<p>Bu kural, <code>\/eski-dizin\/<\/code> alt\u0131ndaki t\u00fcm URL&#8217;leri <code>http:\/\/www.example.com\/yeni-dizin\/<\/code> alt\u0131ndaki e\u015fle\u015fen URL&#8217;lere kal\u0131c\u0131 olarak y\u00f6nlendirir.<\/p>\n<h4><code>mod_rewrite<\/code> ile Kal\u0131c\u0131 Y\u00f6nlendirme<\/h4>\n<p><code>mod_rewrite<\/code>, kal\u0131c\u0131 y\u00f6nlendirmeler i\u00e7in en esnek \u00e7\u00f6z\u00fcmleri sunar ve \u00f6zellikle alan ad\u0131 y\u00f6nlendirmeleri gibi karma\u015f\u0131k senaryolarda tercih edilir.<\/p>\n<h5>Basit <code>RewriteRule<\/code> ile Kal\u0131c\u0131 Y\u00f6nlendirme<\/h5>\n<p><code>RewriteRule<\/code> ile kal\u0131c\u0131 y\u00f6nlendirme yapmak i\u00e7in <code>[R=301]<\/code> bayra\u011f\u0131 kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteRule ^eski-sayfa.html$ http:\/\/www.example.com\/yeni-sayfa.html [R=301,L]<\/code><\/pre>\n<p>Bu kural, <code>\/eski-sayfa.html<\/code> adresini <code>http:\/\/www.example.com\/yeni-sayfa.html<\/code> adresine kal\u0131c\u0131 olarak y\u00f6nlendirir.<\/p>\n<h5>Alan Ad\u0131 Y\u00f6nlendirmeleri<\/h5>\n<p><code>mod_rewrite<\/code>&#8216;\u0131n en yayg\u0131n kullan\u0131mlar\u0131ndan biri, alan ad\u0131 ve protokol seviyesinde y\u00f6nlendirmeler yapmakt\u0131r. Bu t\u00fcr y\u00f6nlendirmeler genellikle <code>.htaccess<\/code> dosyalar\u0131nda veya sanal host yap\u0131land\u0131rmas\u0131nda yap\u0131l\u0131r.<\/p>\n<h6>Non-WWW&#8217;dan WWW&#8217;ye Y\u00f6nlendirme<\/h6>\n<p>Web sitelerinin tutarl\u0131 bir URL yap\u0131s\u0131na sahip olmas\u0131 \u00f6nemlidir. Genellikle ya <code>www.example.com<\/code> ya da <code>example.com<\/code> tercih edilir. A\u015fa\u011f\u0131daki kural, <code>example.com<\/code> adresine gelen t\u00fcm istekleri <code>www.example.com<\/code> adresine y\u00f6nlendirir:<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_HOST} ^example.com [NC]\nRewriteRule ^(.*)$ http:\/\/www.example.com\/$1 [R=301,L]<\/code><\/pre>\n<p>*   <code>RewriteCond %{HTTP_HOST} ^example.com [NC]<\/code>: \u0130stek yap\u0131lan host ad\u0131n\u0131n <code>example.com<\/code> ile ba\u015flad\u0131\u011f\u0131n\u0131 kontrol eder (<code>NC<\/code> bayra\u011f\u0131 b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131zl\u0131\u011f\u0131n\u0131 sa\u011flar).<br \/>\n<em>   <code>RewriteRule ^(.<\/em>)$ http:\/\/www.example.com\/$1 [R=301,L]<\/code>: E\u011fer ko\u015ful sa\u011flan\u0131rsa, URL&#8217;in tamam\u0131n\u0131 (<code>$1<\/code>) alarak <code>www.<\/code> eklenmi\u015f yeni URL&#8217;e 301 olarak y\u00f6nlendirir.<\/p>\n<h6>WWW&#8217;dan Non-WWW&#8217;ye Y\u00f6nlendirme<\/h6>\n<p>E\u011fer tercihiniz <code>example.com<\/code> ise:<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_HOST} ^www.example.com [NC]\nRewriteRule ^(.*)$ http:\/\/example.com\/$1 [R=301,L]<\/code><\/pre>\n<p>Bu kural, <code>www.example.com<\/code> adresine gelen t\u00fcm istekleri <code>example.com<\/code> adresine 301 olarak y\u00f6nlendirir.<\/p>\n<h6>HTTP&#8217;den HTTPS&#8217;ye Y\u00f6nlendirme<\/h6>\n<p>G\u00fcvenlik ve SEO a\u00e7\u0131s\u0131ndan HTTP&#8217;den HTTPS&#8217;ye y\u00f6nlendirme kritik \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]<\/code><\/pre>\n<p>*   <code>RewriteCond %{HTTPS} off<\/code>: \u0130stek HTTPS \u00fczerinden gelmiyorsa (yani HTTP ise) ko\u015fulu sa\u011flar.<br \/>\n<em>   <code>RewriteRule ^(.<\/em>)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]<\/code>: \u0130stek HTTP ise, ayn\u0131 host ve URI ile HTTPS protokol\u00fcne 301 olarak y\u00f6nlendirir.<\/p>\n<h6>Eski Alan Ad\u0131ndan Yeni Alan Ad\u0131na Y\u00f6nlendirme<\/h6>\n<p>Site ta\u015f\u0131ma durumunda t\u00fcm eski alan ad\u0131n\u0131 yeni alan ad\u0131na y\u00f6nlendirmek i\u00e7in:<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_HOST} ^eski-alanadi.com [NC,OR]\nRewriteCond %{HTTP_HOST} ^www.eski-alanadi.com [NC]\nRewriteRule ^(.*)$ http:\/\/www.yeni-alanadi.com\/$1 [R=301,L]<\/code><\/pre>\n<p>Bu kural, hem <code>eski-alanadi.com<\/code> hem de <code>www.eski-alanadi.com<\/code> adreslerine gelen t\u00fcm istekleri <code>http:\/\/www.yeni-alanadi.com\/<\/code> adresine 301 olarak y\u00f6nlendirir. <code>[OR]<\/code> bayra\u011f\u0131, ilk ko\u015ful veya ikinci ko\u015fulun do\u011fru olmas\u0131 durumunda kural\u0131n uygulanaca\u011f\u0131n\u0131 belirtir.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Y\u00f6nlendirme Senaryolar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>Y\u00f6nlendirmeler bir\u00e7ok farkl\u0131 senaryoda kullan\u0131l\u0131r. \u0130\u015fte baz\u0131 yayg\u0131n durumlar ve dikkat edilmesi gerekenler:<\/p>\n<h4>URL De\u011fi\u015fiklikleri<\/h4>\n<p>Bir sayfan\u0131n URL&#8217;i de\u011fi\u015fti\u011finde (\u00f6rne\u011fin, <code>urun-adi.html<\/code> yerine <code>yeni-urun-adi.html<\/code>), eski URL&#8217;den yeni URL&#8217;e 301 y\u00f6nlendirme yap\u0131lmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-apache\">Redirect 301 \/eski-url.html \/yeni-url.html<\/code><\/pre>\n<h4>Site Ta\u015f\u0131ma<\/h4>\n<p>T\u00fcm bir web sitesi yeni bir alan ad\u0131na ta\u015f\u0131nd\u0131\u011f\u0131nda, eski alan ad\u0131ndan yeni alan ad\u0131na t\u00fcm sayfalar\u0131n 301 y\u00f6nlendirilmesi gerekir. Yukar\u0131daki &#8220;Eski Alan Ad\u0131ndan Yeni Alan Ad\u0131na Y\u00f6nlendirme&#8221; \u00f6rne\u011fi bu senaryo i\u00e7in idealdir.<\/p>\n<h4>Eski Sayfalar\u0131 Yeni Sayfalara Y\u00f6nlendirme<\/h4>\n<p>Bir \u00fcr\u00fcn kald\u0131r\u0131ld\u0131\u011f\u0131nda veya bir blog yaz\u0131s\u0131 g\u00fcncellendi\u011finde, eski i\u00e7eri\u011fin URL&#8217;ini ilgili veya benzer yeni bir sayfaya y\u00f6nlendirmek iyi bir uygulamad\u0131r. Bu, &#8220;404 Sayfa Bulunamad\u0131&#8221; hatalar\u0131n\u0131 \u00f6nler ve kullan\u0131c\u0131y\u0131 alakal\u0131 i\u00e7eri\u011fe y\u00f6nlendirir.<\/p>\n<h4>Dizin Yap\u0131s\u0131 De\u011fi\u015fiklikleri<\/h4>\n<p>Bir dizin ad\u0131 veya yap\u0131s\u0131 de\u011fi\u015fti\u011finde, <code>RedirectMatch<\/code> veya <code>RewriteRule<\/code> kullanarak t\u00fcm dizin i\u00e7eri\u011fini y\u00f6nlendirebilirsiniz.<\/p>\n<pre><code class=\"language-apache\"># mod_alias ile\nRedirectMatch 301 ^\/eski-dizin\/(.*)$ \/yeni-dizin\/$1\n\n<h2>mod_rewrite ile<\/h2>\nRewriteRule ^eski-dizin\/(.*)$ \/yeni-dizin\/$1 [R=301,L]<\/code><\/pre>\n<h4>Trailing Slash (Son E\u011fik \u00c7izgi) Y\u00f6netimi<\/h4>\n<p>URL&#8217;lerin sonunda e\u011fik \u00e7izgi (<code>\/<\/code>) olup olmamas\u0131 SEO a\u00e7\u0131s\u0131ndan tutarl\u0131 olmal\u0131d\u0131r. Hem <code>example.com\/dizin<\/code> hem de <code>example.com\/dizin\/<\/code> ayn\u0131 i\u00e7eri\u011fe i\u015faret ediyorsa, arama motorlar\u0131 bunlar\u0131 farkl\u0131 sayfalar olarak alg\u0131layabilir. Birini di\u011ferine y\u00f6nlendirmek, yinelenen i\u00e7erik sorununu \u00f6nler.<\/p>\n<p><strong>E\u011fik \u00e7izgiyi kald\u0131rmak i\u00e7in (dizinler hari\u00e7):<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteCond %{REQUEST_URI} (.+)\/$\nRewriteRule ^(.+)\/$ \/$1 [R=301,L]<\/code><\/pre>\n<p>Bu kural, bir dizin olmayan ve sonunda e\u011fik \u00e7izgi bulunan t\u00fcm URL&#8217;lerden e\u011fik \u00e7izgiyi kald\u0131r\u0131r.<\/p>\n<p><strong>E\u011fik \u00e7izgi eklemek i\u00e7in (dizinlere):<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} -d\nRewriteRule ^(.+)$ \/$1\/ [R=301,L]<\/code><\/pre>\n<p>Bu kural, bir dizin olan ve sonunda e\u011fik \u00e7izgi bulunmayan t\u00fcm URL&#8217;lere e\u011fik \u00e7izgi ekler.<\/p>\n<h4>Y\u00f6nlendirme Zincirlerinden Ka\u00e7\u0131nma<\/h4>\n<p>Bir URL&#8217;in birden fazla y\u00f6nlendirme \u00fczerinden ge\u00e7erek nihai hedefine ula\u015fmas\u0131 (\u00f6rne\u011fin, A -> B -> C) &#8220;y\u00f6nlendirme zinciri&#8221; olu\u015fturur. Bu, performans\u0131 d\u00fc\u015f\u00fcr\u00fcr ve arama motoru botlar\u0131 i\u00e7in sorunlara yol a\u00e7abilir. M\u00fcmk\u00fcn oldu\u011funca do\u011frudan y\u00f6nlendirmeler (A -> C) kullanmaya \u00f6zen g\u00f6sterin.<\/p>\n<h4>Performans Etkisi<\/h4>\n<p>Her y\u00f6nlendirme, sunucuya ek bir istek ve taray\u0131c\u0131ya ek bir y\u00fck bindirir. \u00d6zellikle <code>.htaccess<\/code> dosyalar\u0131nda yo\u011fun <code>mod_rewrite<\/code> kurallar\u0131 kullanmak, Apache&#8217;nin her istekte bu dosyalar\u0131 okuyup i\u015flemesi gerekti\u011fi i\u00e7in performans\u0131 olumsuz etkileyebilir. M\u00fcmk\u00fcnse, y\u00f6nlendirmeleri sunucu yap\u0131land\u0131rma dosyas\u0131nda (\u00f6rne\u011fin <code>httpd.conf<\/code> veya sanal host dosyalar\u0131) tan\u0131mlamak daha verimlidir.<\/p>\n<h4>Test Etme<\/h4>\n<p>Herhangi bir y\u00f6nlendirme kural\u0131n\u0131 canl\u0131ya almadan \u00f6nce mutlaka test edin. Taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131n\u0131 (a\u011f sekmesi) veya \u00e7evrimi\u00e7i y\u00f6nlendirme denetleyicilerini kullanarak y\u00f6nlendirme zincirlerini, durum kodlar\u0131n\u0131 ve hedef URL&#8217;leri do\u011frulay\u0131n.<\/p>\n<h3>Y\u00f6nlendirmeleri Yap\u0131land\u0131rma Yerleri (<code>.htaccess<\/code> vs. <code>httpd.conf<\/code>)<\/h3>\n<p>Apache y\u00f6nlendirmeleri iki ana yerde yap\u0131land\u0131r\u0131labilir: <code>.htaccess<\/code> dosyalar\u0131 veya sunucu yap\u0131land\u0131rma dosyalar\u0131 (<code>httpd.conf<\/code> veya sanal host dosyalar\u0131). Her birinin avantajlar\u0131 ve dezavantajlar\u0131 vard\u0131r.<\/p>\n<h4><code>.htaccess<\/code> Dosyas\u0131<\/h4>\n<p><code>.htaccess<\/code> dosyalar\u0131, dizin baz\u0131nda yap\u0131land\u0131rma de\u011fi\u015fiklikleri yapman\u0131za olanak tan\u0131r. Genellikle payla\u015f\u0131ml\u0131 hosting ortamlar\u0131nda veya ana sunucu yap\u0131land\u0131rmas\u0131na eri\u015fiminiz olmad\u0131\u011f\u0131nda kullan\u0131l\u0131r.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>Kolay Eri\u015fim:<\/strong> FTP veya dosya y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kolayca d\u00fczenlenebilir.<br \/>\n*   <strong>Dizin Baz\u0131nda Kontrol:<\/strong> Belirli bir dizin ve alt dizinleri i\u00e7in \u00f6zel kurallar tan\u0131mlanabilir.<br \/>\n*   <strong>Sunucu Yeniden Ba\u015flatmaya Gerek Yok:<\/strong> De\u011fi\u015fiklikler an\u0131nda ge\u00e7erli olur.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>Performans Etkisi:<\/strong> Apache, her istekte <code>.htaccess<\/code> dosyalar\u0131n\u0131 (ve \u00fcst dizinlerdeki <code>.htaccess<\/code> dosyalar\u0131n\u0131) aramak ve i\u015flemek zorundad\u0131r. Bu, \u00f6zellikle yo\u011fun trafikli sitelerde veya \u00e7ok say\u0131da <code>.htaccess<\/code> dosyas\u0131 olan dizinlerde performans\u0131 d\u00fc\u015f\u00fcrebilir.<br \/>\n*   <strong>G\u00fcvenlik Riskleri:<\/strong> Yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda g\u00fcvenlik zafiyetlerine yol a\u00e7abilir.<br \/>\n*   <strong>Daha Yava\u015f Y\u00fcr\u00fctme:<\/strong> Sunucu yap\u0131land\u0131rmas\u0131na g\u00f6re daha yava\u015f i\u015flenir.<\/p>\n<p><code>.htaccess<\/code> kullan\u0131rken <code>AllowOverride All<\/code> veya <code>AllowOverride FileInfo<\/code> gibi direktiflerin sunucu yap\u0131land\u0131rmas\u0131nda etkinle\u015ftirilmi\u015f olmas\u0131 gerekir. Ayr\u0131ca, <code>mod_rewrite<\/code> kullan\u0131yorsan\u0131z, <code>Options +FollowSymLinks<\/code> direktifini de <code>.htaccess<\/code> dosyan\u0131z\u0131n ba\u015f\u0131na eklemeniz gerekebilir.<\/p>\n<h4>Sunucu Yap\u0131land\u0131rma Dosyas\u0131 (<code>httpd.conf<\/code> veya Sanal Host)<\/h4>\n<p>Sunucu yap\u0131land\u0131rma dosyalar\u0131 (genellikle <code>httpd.conf<\/code> veya <code>\/etc\/apache2\/sites-available\/<\/code> dizinindeki sanal host dosyalar\u0131), sunucunun global ayarlar\u0131n\u0131 veya belirli sanal hostlar\u0131n ayarlar\u0131n\u0131 i\u00e7erir.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   <strong>Performans:<\/strong> Apache, yap\u0131land\u0131rma dosyalar\u0131n\u0131 yaln\u0131zca ba\u015flat\u0131ld\u0131\u011f\u0131nda veya yeniden y\u00fcklendi\u011finde bir kez okur. Bu, <code>.htaccess<\/code> dosyalar\u0131na g\u00f6re \u00e7ok daha iyi performans sa\u011flar.<br \/>\n*   <strong>Merkezi Y\u00f6netim:<\/strong> T\u00fcm y\u00f6nlendirme kurallar\u0131 merkezi bir yerde y\u00f6netilir, bu da bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Daha G\u00fcvenli:<\/strong> Yanl\u0131\u015f yap\u0131land\u0131rmalar\u0131n etkisi daha s\u0131n\u0131rl\u0131d\u0131r ve daha az g\u00fcvenlik riski ta\u015f\u0131r.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   <strong>Eri\u015fim Gereksinimi:<\/strong> Sunucuya k\u00f6k (root) eri\u015fimi gerektirir. Payla\u015f\u0131ml\u0131 hosting ortamlar\u0131nda genellikle m\u00fcmk\u00fcn de\u011fildir.<br \/>\n*   <strong>Sunucu Yeniden Ba\u015flatma:<\/strong> De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Apache sunucusunun yeniden ba\u015flat\u0131lmas\u0131 veya yeniden y\u00fcklenmesi gerekir.<\/p>\n<p><strong>Genel Kural:<\/strong> E\u011fer sunucu yap\u0131land\u0131rma dosyalar\u0131na eri\u015fiminiz varsa, y\u00f6nlendirmelerinizi orada tan\u0131mlamak her zaman tercih edilen y\u00f6ntemdir. <code>.htaccess<\/code> dosyalar\u0131n\u0131 yaln\u0131zca mutlak gerekli oldu\u011funda ve performans \u00fczerindeki etkilerini g\u00f6z \u00f6n\u00fcnde bulundurarak kullan\u0131n.<\/p>\n<h3>Hata Ay\u0131klama ve Sorun Giderme<\/h3>\n<p>Y\u00f6nlendirme kurallar\u0131 karma\u015f\u0131k olabilir ve bazen beklenmedik sonu\u00e7lar do\u011furabilir. \u0130\u015fte hata ay\u0131klama ve sorun giderme i\u00e7in baz\u0131 ipu\u00e7lar\u0131:<\/p>\n<h4>Apache G\u00fcnl\u00fcklerini Kontrol Etme<\/h4>\n<p>Apache&#8217;nin hata g\u00fcnl\u00fckleri (<code>error_log<\/code>) ve eri\u015fim g\u00fcnl\u00fckleri (<code>access_log<\/code>), y\u00f6nlendirme sorunlar\u0131n\u0131 te\u015fhis etmede \u00e7ok yard\u0131mc\u0131 olabilir. <code>mod_rewrite<\/code> ile ilgili sorunlar genellikle hata g\u00fcnl\u00fcklerinde g\u00f6r\u00fcn\u00fcr. <code>RewriteLogLevel<\/code> direktifini <code>debug<\/code> seviyesine ayarlayarak daha detayl\u0131 bilgi alabilirsiniz (ancak bunu \u00fcretim ortam\u0131nda uzun s\u00fcre b\u0131rakmay\u0131n, performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olur).<\/p>\n<h4>Taray\u0131c\u0131 Geli\u015ftirici Ara\u00e7lar\u0131n\u0131 Kullanma<\/h4>\n<p>\u00c7o\u011fu modern web taray\u0131c\u0131s\u0131 (Chrome, Firefox, Edge) geli\u015ftirici ara\u00e7lar\u0131na sahiptir. &#8220;A\u011f&#8221; (Network) sekmesini kullanarak bir URL&#8217;e yap\u0131lan iste\u011fi ve sunucudan gelen yan\u0131t\u0131 inceleyebilirsiniz. Burada HTTP durum kodunu (301, 302, 404 vb.), y\u00f6nlendirme zincirlerini ve nihai hedef URL&#8217;i g\u00f6rebilirsiniz.<\/p>\n<h4>\u00c7evrimi\u00e7i Y\u00f6nlendirme Denetleyicileri<\/h4>\n<p>Bir\u00e7ok web sitesi, bir URL&#8217;in y\u00f6nlendirme zincirini ve durum kodlar\u0131n\u0131 g\u00f6steren \u00fccretsiz \u00e7evrimi\u00e7i ara\u00e7lar sunar (\u00f6rne\u011fin, <code>httpstatus.io<\/code>, <code>redirect-checker.org<\/code>). Bu ara\u00e7lar, y\u00f6nlendirmelerinizin d\u0131\u015far\u0131dan nas\u0131l g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc anlaman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h4>S\u00f6zdizimi Hatalar\u0131<\/h4>\n<p><code>mod_rewrite<\/code> kurallar\u0131 d\u00fczenli ifadeler kulland\u0131\u011f\u0131 i\u00e7in s\u00f6zdizimi hatalar\u0131 yayg\u0131nd\u0131r. K\u00fc\u00e7\u00fck bir yaz\u0131m hatas\u0131 veya yanl\u0131\u015f yerle\u015ftirilmi\u015f bir karakter t\u00fcm kural\u0131 bozabilir. Apache&#8217;yi yeniden ba\u015flat\u0131rken veya yap\u0131land\u0131rmay\u0131 kontrol ederken s\u00f6zdizimi hatalar\u0131 genellikle belirtilir.<\/p>\n<h4>Y\u00f6nlendirme D\u00f6ng\u00fcleri<\/h4>\n<p>Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f kurallar, bir URL&#8217;in kendini tekrar tekrar y\u00f6nlendirmesine neden olan &#8220;y\u00f6nlendirme d\u00f6ng\u00fcleri&#8221; olu\u015fturabilir (\u00f6rne\u011fin, A -> B -> A). Bu, taray\u0131c\u0131n\u0131n &#8220;\u00e7ok fazla y\u00f6nlendirme&#8221; hatas\u0131 vermesine neden olur. Geli\u015ftirici ara\u00e7lar\u0131 veya \u00e7evrimi\u00e7i denetleyiciler bu d\u00f6ng\u00fcleri tespit etmenize yard\u0131mc\u0131 olabilir. D\u00f6ng\u00fcleri \u00f6nlemek i\u00e7in kurallar\u0131n\u0131z\u0131 dikkatlice yaz\u0131n ve test edin. \u00d6zellikle <code>RewriteRule<\/code>&#8216;da hedef URL&#8217;in kaynak desenle tekrar e\u015fle\u015fmeyece\u011finden emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Apache ile ge\u00e7ici ve kal\u0131c\u0131 y\u00f6nlendirmeler olu\u015fturmak, bir web sitesinin sorunsuz \u00e7al\u0131\u015fmas\u0131, kullan\u0131c\u0131 deneyimi ve arama motoru optimizasyonu i\u00e7in hayati \u00f6neme sahiptir. <code>mod_alias<\/code> basit ve do\u011frudan y\u00f6nlendirmeler i\u00e7in ideal bir \u00e7\u00f6z\u00fcm sunarken, <code>mod_rewrite<\/code> karma\u015f\u0131k ve ko\u015fullu y\u00f6nlendirme senaryolar\u0131 i\u00e7in rakipsiz bir esneklik sa\u011flar.<\/p>\n<p>Bu rehberde ele al\u0131nan direktifler, bayraklar ve senaryolar, web y\u00f6neticilerine ve geli\u015ftiricilere Apache \u00fczerinde etkili y\u00f6nlendirme stratejileri uygulamak i\u00e7in gerekli bilgileri sunmaktad\u0131r. Unutulmamal\u0131d\u0131r ki, her y\u00f6nlendirme kural\u0131 dikkatle test edilmeli ve m\u00fcmk\u00fcn oldu\u011funca sunucu yap\u0131land\u0131rma dosyalar\u0131nda tan\u0131mlanmal\u0131d\u0131r. Do\u011fru uygulanan y\u00f6nlendirmeler, sitenizin s\u00fcrekli geli\u015fen web ortam\u0131nda sa\u011flam ve eri\u015filebilir kalmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber\nGiri\u015f\n\u0130nternet d\u00fcnyas\u0131nda web siteleri s\u00fcrekli bir de\u011fi\u015fim ve","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[874],"tags":[],"class_list":{"0":"post-32570","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-server","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber Giri\u015f \u0130nternet d\u00fcnyas\u0131nda web siteleri s\u00fcrekli bir de\u011fi\u015fim ve\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-23T07:41:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-10-23T07:41:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\"},\"wordCount\":3121,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Server\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\",\"name\":\"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-23T07:41:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber","og_description":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber Giri\u015f \u0130nternet d\u00fcnyas\u0131nda web siteleri s\u00fcrekli bir de\u011fi\u015fim ve","og_url":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-23T07:41:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber","datePublished":"2025-10-23T07:41:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/"},"wordCount":3121,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Server"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/","name":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-23T07:41:05+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/apache-ile-gecici-ve-kalici-yonlendirmeler-olusturma-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache ile Ge\u00e7ici ve Kal\u0131c\u0131 Y\u00f6nlendirmeler Olu\u015fturma: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32570"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32570\/revisions"}],"predecessor-version":[{"id":32571,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32570\/revisions\/32571"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}