{"id":39813,"date":"2026-02-24T04:40:44","date_gmt":"2026-02-24T01:40:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=39813"},"modified":"2026-02-24T04:40:44","modified_gmt":"2026-02-24T01:40:44","slug":"apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/","title":{"rendered":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber<\/h2>\n<h3>Giri\u015f: mod_rewrite Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Modern web uygulamalar\u0131nda ve web sitelerinde URL yap\u0131s\u0131, kullan\u0131c\u0131 deneyimi, arama motoru optimizasyonu (SEO) ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik bir rol oynar. Karma\u015f\u0131k, parametrelerle dolu URL&#8217;ler hem kullan\u0131c\u0131lar i\u00e7in anla\u015f\u0131lmas\u0131 zor olabilir hem de arama motorlar\u0131n\u0131n sitenizi dizine eklemesini zorla\u015ft\u0131rabilir. \u0130\u015fte tam bu noktada Apache web sunucusunun g\u00fc\u00e7l\u00fc bir mod\u00fcl\u00fc olan <code>mod_rewrite<\/code> devreye girer. <code>mod_rewrite<\/code>, gelen URL isteklerini sunucuda farkl\u0131 bir kayna\u011fa y\u00f6nlendirme veya yeniden yazma yetene\u011fi sunar. Bu, dinamik web sitelerinin daha temiz, anlaml\u0131 ve kullan\u0131c\u0131 dostu URL&#8217;lere sahip olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Ubuntu 18.04 gibi Linux tabanl\u0131 bir sunucu \u00fczerinde Apache kullan\u0131rken <code>mod_rewrite<\/code>, web y\u00f6neticileri ve geli\u015ftiriciler i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Bu makalede, Ubuntu 18.04 \u00fczerinde Apache ile <code>mod_rewrite<\/code>&#8216;\u0131 nas\u0131l etkinle\u015ftirece\u011finizi, temel direktiflerini, yayg\u0131n kullan\u0131m senaryolar\u0131n\u0131 ve hata ay\u0131klama ipu\u00e7lar\u0131n\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele alaca\u011f\u0131z. Amac\u0131m\u0131z, <code>mod_rewrite<\/code>&#8216;\u0131n g\u00fcc\u00fcn\u00fc tam olarak anlaman\u0131z\u0131 ve projelerinizde etkili bir \u015fekilde kullanabilmenizi sa\u011flamakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler ve mod_rewrite&#8217;\u0131 Etkinle\u015ftirme<\/h3>\n<p><code>mod_rewrite<\/code>&#8216;\u0131 kullanmaya ba\u015flamadan \u00f6nce, Ubuntu 18.04 sunucunuzda \u00e7al\u0131\u015fan bir Apache web sunucusuna sahip olman\u0131z gerekmektedir. E\u011fer hen\u00fcz Apache kurulu de\u011filse, a\u015fa\u011f\u0131daki komutlarla kurulumu ger\u00e7ekle\u015ftirebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install apache2<\/code><\/pre>\n<p>Apache kurulu ve \u00e7al\u0131\u015f\u0131r durumda oldu\u011funda, <code>mod_rewrite<\/code> mod\u00fcl\u00fcn\u00fcn etkinle\u015ftirildi\u011finden emin olmam\u0131z gerekir. \u00c7o\u011fu Apache kurulumunda <code>mod_rewrite<\/code> varsay\u0131lan olarak y\u00fcklenir ancak etkinle\u015ftirilmesi gerekebilir.<\/p>\n<h4>mod_rewrite Durumunu Kontrol Etme<\/h4>\n<p><code>mod_rewrite<\/code>&#8216;\u0131n etkin olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">apache2ctl -M | grep rewrite<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131da <code>rewrite_module (shared)<\/code> ifadesini g\u00f6r\u00fcyorsan\u0131z, <code>mod_rewrite<\/code> zaten etkin demektir ve bir sonraki ad\u0131ma ge\u00e7ebilirsiniz. Aksi takdirde, mod\u00fcl\u00fc etkinle\u015ftirmeniz gerekecektir.<\/p>\n<h4>mod_rewrite&#8217;\u0131 Etkinle\u015ftirme<\/h4>\n<p><code>mod_rewrite<\/code>&#8216;\u0131 etkinle\u015ftirmek i\u00e7in Apache&#8217;nin <code>a2enmod<\/code> (Apache 2 Enable Module) arac\u0131n\u0131 kullan\u0131r\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo a2enmod rewrite<\/code><\/pre>\n<p>Bu komut, <code>mod_rewrite<\/code> mod\u00fcl\u00fcn\u00fc etkinle\u015ftirir. De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Apache servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<p>Art\u0131k <code>mod_rewrite<\/code> mod\u00fcl\u00fc sunucunuzda etkin ve kullan\u0131ma haz\u0131r durumda.<\/p>\n<h3>Konfig\u00fcrasyon Ba\u011flam\u0131: Nerede ve Nas\u0131l Kullan\u0131l\u0131r?<\/h3>\n<p><code>mod_rewrite<\/code> kurallar\u0131n\u0131 Apache&#8217;ye \u00fc\u00e7 farkl\u0131 ba\u011flamda uygulayabiliriz:<\/p>\n<p>1.  <strong>Ana Sunucu Konfig\u00fcrasyonu (<code>apache2.conf<\/code> veya <code>httpd.conf<\/code>):<\/strong> Bu dosya, Apache&#8217;nin genel konfig\u00fcrasyonunu i\u00e7erir. Burada tan\u0131mlanan kurallar t\u00fcm sanal ana bilgisayarlar\u0131 etkiler. Performans a\u00e7\u0131s\u0131ndan en verimli y\u00f6ntem olsa da, genellikle esneklik a\u00e7\u0131s\u0131ndan sanal ana bilgisayar veya <code>.htaccess<\/code> dosyalar\u0131 tercih edilir.<br \/>\n2.  <strong>Sanal Ana Bilgisayar Konfig\u00fcrasyonu (<code>sites-available\/*.conf<\/code>):<\/strong> Ubuntu&#8217;da sanal ana bilgisayarlar genellikle <code>\/etc\/apache2\/sites-available\/<\/code> dizinindeki <code>.conf<\/code> uzant\u0131l\u0131 dosyalarda tan\u0131mlan\u0131r. Bu dosyalar, belirli bir alan ad\u0131 veya IP adresi i\u00e7in \u00f6zel kurallar tan\u0131mlaman\u0131za olanak tan\u0131r. \u00c7o\u011fu durumda, rewrite kurallar\u0131n\u0131 buraya eklemek en dengeli yakla\u015f\u0131md\u0131r.<br \/>\n3.  <strong>Dizin Baz\u0131nda Konfig\u00fcrasyon (<code>.htaccess<\/code> Dosyalar\u0131):<\/strong> <code>.htaccess<\/code> dosyalar\u0131, web sitenizin k\u00f6k dizininde veya alt dizinlerinde bulunabilen \u00f6zel konfig\u00fcrasyon dosyalar\u0131d\u0131r. Bu dosyalar, bir dizin ve alt dizinleri i\u00e7in ge\u00e7erli olacak rewrite kurallar\u0131n\u0131 tan\u0131mlaman\u0131za olanak tan\u0131r. Geli\u015ftiriciler i\u00e7in b\u00fcy\u00fck esneklik sunar \u00e7\u00fcnk\u00fc sunucuya eri\u015fim gerektirmeden kurallar\u0131 de\u011fi\u015ftirebilirler. Ancak, her istekte Apache&#8217;nin bu dosyalar\u0131 aramas\u0131 ve i\u015flemesi gerekti\u011finden performans \u00fczerinde bir miktar etkisi olabilir.<\/p>\n<h4>.htaccess Dosyalar\u0131 \u0130\u00e7in <code>AllowOverride<\/code> Ayar\u0131<\/h4>\n<p>E\u011fer <code>.htaccess<\/code> dosyalar\u0131n\u0131 kullanmay\u0131 planl\u0131yorsan\u0131z, Apache&#8217;nin bu dosyalar\u0131 okumas\u0131na ve i\u00e7indeki direktifleri uygulamas\u0131na izin vermeniz gerekir. Bu, sanal ana bilgisayar konfig\u00fcrasyonunuzdaki veya ana sunucu konfig\u00fcrasyonunuzdaki <code><Directory><\/code> blo\u011funda <code>AllowOverride<\/code> direktifi ile yap\u0131l\u0131r.<\/p>\n<p>\u00d6rne\u011fin, varsay\u0131lan web k\u00f6k dizini <code>\/var\/www\/html<\/code> i\u00e7in <code>.htaccess<\/code> kullan\u0131m\u0131n\u0131 etkinle\u015ftirmek isterseniz, <code>000-default.conf<\/code> dosyas\u0131n\u0131 (veya kendi sanal ana bilgisayar dosyan\u0131z\u0131) d\u00fczenlemeniz gerekebilir:<\/p>\n<pre><code class=\"language-apache\"><VirtualHost *:80>\n    # ... di\u011fer ayarlar ...\n    DocumentRoot \/var\/www\/html\n\n    <Directory \/var\/www\/html\/>\n        Options Indexes FollowSymLinks\n        AllowOverride All  # Bu sat\u0131r \u00f6nemlidir!\n        Require all granted\n    <\/Directory>\n    # ...\n<\/VirtualHost><\/code><\/pre>\n<p><code>AllowOverride All<\/code> yerine <code>AllowOverride FileInfo<\/code> da kullanabilirsiniz, bu sadece <code>mod_rewrite<\/code> direktiflerine izin verir ve daha g\u00fcvenlidir. De\u011fi\u015fiklikleri kaydettikten sonra Apache&#8217;yi yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<h3>mod_rewrite Direktifleri: Temel Yap\u0131 Ta\u015flar\u0131<\/h3>\n<p><code>mod_rewrite<\/code>&#8216;\u0131n g\u00fcc\u00fc, \u00fc\u00e7 ana direktif etraf\u0131nda d\u00f6ner: <code>RewriteEngine<\/code>, <code>RewriteCond<\/code> ve <code>RewriteRule<\/code>.<\/p>\n<h4>RewriteEngine On\/Off<\/h4>\n<p>Bu direktif, <code>mod_rewrite<\/code> motorunun belirli bir ba\u011flamda (sanal ana bilgisayar veya dizin) a\u00e7\u0131k m\u0131 yoksa kapal\u0131 m\u0131 oldu\u011funu belirtir. Kurallar\u0131 uygulamadan \u00f6nce mutlaka <code>On<\/code> olarak ayarlanmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On<\/code><\/pre>\n<h4>RewriteCond (Yeniden Yazma Ko\u015fulu)<\/h4>\n<p><code>RewriteCond<\/code>, bir <code>RewriteRule<\/code>&#8216;\u0131n uygulanabilmesi i\u00e7in kar\u015f\u0131lanmas\u0131 gereken ko\u015fullar\u0131 tan\u0131mlar. Bir <code>RewriteRule<\/code>&#8216;dan \u00f6nce birden fazla <code>RewriteCond<\/code> direktifi bulunabilir ve t\u00fcm ko\u015fullar\u0131n (varsay\u0131lan olarak AND mant\u0131\u011f\u0131yla) kar\u015f\u0131lanmas\u0131 gerekir.<\/p>\n<p><strong>S\u00f6zdizimi:<\/strong><br \/>\n<code>RewriteCond TestString Ko\u015ful [Bayraklar]<\/code><\/p>\n<p>*   <strong>TestString:<\/strong> Kar\u015f\u0131la\u015ft\u0131rmak istedi\u011finiz dizedir. Bu genellikle sunucu de\u011fi\u015fkenleri, HTTP ba\u015fl\u0131klar\u0131 veya di\u011fer \u00f6zel de\u011ferler olabilir. \u00d6rne\u011fin:<br \/>\n    *   <code>%{HTTP_HOST}<\/code>: Gelen iste\u011fin ana bilgisayar ad\u0131.<br \/>\n    *   <code>%{REQUEST_URI}<\/code>: \u0130ste\u011fin URI&#8217;si (protokol ve ana bilgisayar ad\u0131 hari\u00e7).<br \/>\n    *   <code>%{QUERY_STRING}<\/code>: URL&#8217;deki sorgu dizesi.<br \/>\n    *   <code>%{REQUEST_FILENAME}<\/code>: \u0130stenen dosyan\u0131n veya dizinin fiziksel yolu.<br \/>\n    *   <code>%{HTTP_USER_AGENT}<\/code>: Kullan\u0131c\u0131n\u0131n taray\u0131c\u0131 bilgisi.<br \/>\n*   <strong>Ko\u015ful:<\/strong> <code>TestString<\/code> ile kar\u015f\u0131la\u015ft\u0131r\u0131lacak d\u00fczenli ifade (regular expression) veya \u00f6zel bir ko\u015ful.<br \/>\n*   <strong>Bayraklar (Flags):<\/strong> Ko\u015fulun nas\u0131l de\u011ferlendirilece\u011fini belirleyen iste\u011fe ba\u011fl\u0131 parametreler. En yayg\u0131n olanlar\u0131:<br \/>\n    *   <code>NC<\/code> (No Case): B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z e\u015fle\u015fme.<br \/>\n    *   <code>OR<\/code> (Logical OR): Sonraki <code>RewriteCond<\/code> ile VEYA mant\u0131\u011f\u0131yla ba\u011flan\u0131r. Varsay\u0131lan olarak t\u00fcm ko\u015fullar AND ile ba\u011flan\u0131r.<br \/>\n    *   <code>L<\/code> (Last): E\u011fer bu ko\u015ful ge\u00e7erliyse, di\u011fer t\u00fcm sonraki <code>RewriteCond<\/code> veya <code>RewriteRule<\/code> direktiflerini atla.<br \/>\n    *   <code>F<\/code> (Forbidden): E\u011fer bu ko\u015ful ge\u00e7erliyse, 403 Forbidden hatas\u0131 d\u00f6nd\u00fcr.<br \/>\n    *   <code>R<\/code> (Redirect): E\u011fer bu ko\u015ful ge\u00e7erliyse, bir y\u00f6nlendirme yap.<\/p>\n<p><strong>\u00d6rnek <code>RewriteCond<\/code> Kullan\u0131mlar\u0131:<\/strong><\/p>\n<p>*   <strong>Belirli bir ana bilgisayar ad\u0131n\u0131 kontrol etme:<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteCond %{HTTP_HOST} ^www\\.example\\.com$ [NC]<\/code><\/pre>\n<p>*   <strong>Dosyan\u0131n veya dizinin var olup olmad\u0131\u011f\u0131n\u0131 kontrol etme:<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteCond %{REQUEST_FILENAME} !-f  # \u0130stenen yol bir dosya de\u011filse\n    RewriteCond %{REQUEST_FILENAME} !-d  # \u0130stenen yol bir dizin de\u011filse<\/code><\/pre>\n<p>    Burada <code>!-f<\/code> &#8220;e\u011fer bir dosya de\u011filse&#8221;, <code>!-d<\/code> &#8220;e\u011fer bir dizin de\u011filse&#8221; anlam\u0131na gelir.<\/p>\n<h4>RewriteRule (Yeniden Yazma Kural\u0131)<\/h4>\n<p><code>RewriteRule<\/code>, <code>mod_rewrite<\/code>&#8216;\u0131n kalbidir. Gelen URL&#8217;yi belirli bir desene g\u00f6re e\u015fle\u015ftirir ve ard\u0131ndan ba\u015fka bir URL&#8217;ye d\u00f6n\u00fc\u015ft\u00fcr\u00fcr.<\/p>\n<p><strong>S\u00f6zdizimi:<\/strong><br \/>\n<code>RewriteRule Desen YerineKoyma [Bayraklar]<\/code><\/p>\n<p>*   <strong>Desen (Pattern):<\/strong> Gelen URL yolunu e\u015fle\u015ftirmek i\u00e7in kullan\u0131lan d\u00fczenli ifadedir. Bu desen, <code>DocumentRoot<\/code>&#8216;a g\u00f6re g\u00f6receli olarak verilir (yani, ana bilgisayar ad\u0131 ve protokol hari\u00e7).<br \/>\n*   <strong>YerineKoyma (Substitution):<\/strong> Desen e\u015fle\u015fti\u011finde URL&#8217;nin hangi de\u011fere d\u00f6n\u00fc\u015ft\u00fcr\u00fclece\u011fini belirler. Bu, mutlak bir URL, g\u00f6receli bir yol veya dinamik olarak olu\u015fturulmu\u015f bir URL olabilir.<br \/>\n*   <strong>Bayraklar (Flags):<\/strong> Kural\u0131n nas\u0131l uygulanaca\u011f\u0131n\u0131 belirleyen iste\u011fe ba\u011fl\u0131 parametreler. En yayg\u0131n olanlar\u0131:<br \/>\n    *   <code>L<\/code> (Last): Bu kural e\u015fle\u015firse, sonraki t\u00fcm <code>RewriteRule<\/code> direktiflerini atla ve i\u015flemi sonland\u0131r. Bu, sonsuz d\u00f6ng\u00fcleri \u00f6nlemek ve belirli bir kural\u0131n \u00f6ncelikli olmas\u0131n\u0131 sa\u011flamak i\u00e7in \u00e7ok \u00f6nemlidir.<br \/>\n    *   <code>R<\/code> (Redirect) veya <code>R=301<\/code>, <code>R=302<\/code>: Taray\u0131c\u0131ya bir HTTP y\u00f6nlendirmesi (redirect) g\u00f6nderir. <code>R<\/code> varsay\u0131lan olarak 302 (ge\u00e7ici) y\u00f6nlendirme yapar. <code>R=301<\/code> kal\u0131c\u0131 y\u00f6nlendirme (Moved Permanently) i\u00e7in kullan\u0131l\u0131r ve SEO a\u00e7\u0131s\u0131ndan \u00f6nemlidir.<br \/>\n    *   <code>NC<\/code> (No Case): Desen e\u015fle\u015ftirmesinde b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131zl\u0131\u011f\u0131.<br \/>\n    *   <code>QSA<\/code> (Query String Append): Yeni URL&#8217;ye orijinal sorgu dizesini (query string) ekler. E\u011fer belirtilmezse, sorgu dizesi kaybolabilir.<br \/>\n    *   <code>PT<\/code> (Pass Through): Yeniden yaz\u0131lan URL&#8217;nin dahili bir alt iste\u011fe d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesini sa\u011flar. Genellikle <code>mod_proxy<\/code> ile birlikte kullan\u0131l\u0131r.<br \/>\n    *   <code>E=VAR:VALUE<\/code> (Set Environment Variable): Bir ortam de\u011fi\u015fkeni ayarlar.<br \/>\n    *   <code>DPI<\/code> (Discard Path Info): Yeniden yaz\u0131lan URL&#8217;ye eklenen t\u00fcm yol bilgilerini atar.<\/p>\n<p><strong>D\u00fczenli \u0130fadeler (Regular Expressions) Temelleri:<\/strong><br \/>\n<code>mod_rewrite<\/code> kurallar\u0131n\u0131n g\u00fcc\u00fc, d\u00fczenli ifadelerin do\u011fru kullan\u0131m\u0131yla ortaya \u00e7\u0131kar. \u0130\u015fte baz\u0131 temel regex \u00f6\u011feleri:<\/p>\n<p>*   <code>^<\/code>: Dizinin ba\u015flang\u0131c\u0131.<br \/>\n*   <code>$<\/code>: Dizinin sonu.<br \/>\n*   <code>.<\/code>: Herhangi bir tek karakter (sat\u0131r sonu hari\u00e7).<br \/>\n<em>   <code><\/em><\/code>: \u00d6nceki karakterden s\u0131f\u0131r veya daha fazla e\u015fle\u015fme.<br \/>\n*   <code>+<\/code>: \u00d6nceki karakterden bir veya daha fazla e\u015fle\u015fme.<br \/>\n*   <code>?<\/code>: \u00d6nceki karakterden s\u0131f\u0131r veya bir e\u015fle\u015fme (iste\u011fe ba\u011fl\u0131).<br \/>\n*   <code>()<\/code>: E\u015fle\u015fen bir grubu yakalamak i\u00e7in kullan\u0131l\u0131r. Yakalanan de\u011ferlere <code>RewriteRule<\/code>&#8216;da <code>$1<\/code>, <code>$2<\/code>, vb. ile eri\u015filir. <code>RewriteCond<\/code>&#8216;da ise <code>%1<\/code>, <code>%2<\/code>, vb. ile eri\u015filir.<br \/>\n*   <code>[]<\/code>: K\u00f6\u015feli parantez i\u00e7indeki karakterlerden herhangi biriyle e\u015fle\u015fir (\u00f6rn: <code>[a-z0-9]<\/code>).<br \/>\n*   <code>|<\/code>: VEYA operat\u00f6r\u00fc (\u00f6rn: <code>(cat|dog)<\/code>).<br \/>\n*   <code>\\<\/code>: \u00d6zel karakterleri ka\u00e7\u0131\u015f karakteri olarak kullan\u0131r (\u00f6rn: <code>\\.<\/code> bir nokta karakteriyle e\u015fle\u015fir, <code>.<\/code> ise herhangi bir karakterle).<\/p>\n<p><strong>\u00d6rnek <code>RewriteRule<\/code> Kullan\u0131m\u0131:<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteRule ^urunler\/([0-9]+)$ urun.php?id=$1 [L,QSA]<\/code><\/pre>\n<p>Bu kural:<br \/>\n*   <code>^urunler\/([0-9]+)$<\/code> deseniyle e\u015fle\u015fir. Yani, &#8220;urunler\/&#8221; ile ba\u015flayan ve ard\u0131ndan bir veya daha fazla say\u0131sal karakterle biten bir URL&#8217;yi (\u00f6rn: <code>\/urunler\/123<\/code>) yakalar.<br \/>\n*   <code>([0-9]+)<\/code> ifadesi, say\u0131sal karakter grubunu yakalar ve <code>$1<\/code> olarak yerine koyma dizesinde kullan\u0131labilir hale getirir.<br \/>\n*   <code>urun.php?id=$1<\/code> ifadesi, gelen iste\u011fi <code>urun.php?id=123<\/code> \u015feklinde dahili olarak yeniden yazar.<br \/>\n*   <code>[L,QSA]<\/code> bayraklar\u0131, bu kural\u0131n son oldu\u011funu ve varsa orijinal sorgu dizesini eklemesini sa\u011flar.<\/p>\n<h3>Yayg\u0131n Yeniden Yazma Senaryolar\u0131 ve \u00d6rnekleri<\/h3>\n<p>\u015eimdi <code>mod_rewrite<\/code>&#8216;\u0131n g\u00fcc\u00fcn\u00fc g\u00f6steren baz\u0131 pratik \u00f6rneklere ge\u00e7elim. Bu \u00f6rnekler, <code>.htaccess<\/code> dosyalar\u0131na veya sanal ana bilgisayar konfig\u00fcrasyonunuza eklenebilir.<\/p>\n<h4>1. HTTP&#8217;den HTTPS&#8217;e Y\u00f6nlendirme (Kal\u0131c\u0131)<\/h4>\n<p>Web sitenizin g\u00fcvenli\u011fini sa\u011flamak ve SEO s\u0131ralamas\u0131n\u0131 iyile\u015ftirmek i\u00e7in t\u00fcm trafi\u011fi HTTPS&#8217;e y\u00f6nlendirmek \u00f6nemlidir.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<p>*   <code>RewriteCond %{HTTPS} off<\/code>: E\u011fer gelen istek HTTPS protokol\u00fc \u00fczerinden gelmiyorsa (yani HTTP ise).<br \/>\n<em>   <code>RewriteRule ^(.<\/em>)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code>: T\u00fcm gelen istekleri (<code>^(.*)$<\/code>) HTTPS versiyonuna y\u00f6nlendir (<code>https:\/\/%{HTTP_HOST}%{REQUEST_URI}<\/code>). <code>L<\/code> (Last) bayra\u011f\u0131, ba\u015fka kural\u0131n i\u015flenmesini durdurur. <code>R=301<\/code> kal\u0131c\u0131 (Moved Permanently) y\u00f6nlendirme yapar.<\/p>\n<h4>2. www Olmayan Adresi www&#8217;lu Adrese Y\u00f6nlendirme<\/h4>\n<p>Web sitenizin kanonik (tercih edilen) versiyonu <code>www.example.com<\/code> ise, <code>example.com<\/code> adresine gelen istekleri <code>www<\/code> i\u00e7eren versiyona y\u00f6nlendirebilirsiniz.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_HOST} ^example\\.com [NC]\nRewriteRule ^(.*)$ http:\/\/www.example.com%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<p>*   <code>RewriteCond %{HTTP_HOST} ^example\\.com [NC]<\/code>: E\u011fer ana bilgisayar ad\u0131 <code>example.com<\/code> ile ba\u015fl\u0131yorsa (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z).<br \/>\n<em>   <code>RewriteRule ^(.<\/em>)$ http:\/\/www.example.com%{REQUEST_URI} [L,R=301]<\/code>: T\u00fcm istekleri <code>www.example.com<\/code> adresine y\u00f6nlendir.<\/p>\n<h4>3. www&#8217;lu Adresi www Olmayan Adrese Y\u00f6nlendirme<\/h4>\n<p>Tersi durumda, <code>example.com<\/code> adresini tercih ediyorsan\u0131z:<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_HOST} ^www\\.example\\.com [NC]\nRewriteRule ^(.*)$ http:\/\/example.com%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<h4>4. Dost URL&#8217;ler Olu\u015fturma (Clean URLs)<\/h4>\n<p>Bu, <code>mod_rewrite<\/code>&#8216;\u0131n en yayg\u0131n kullan\u0131mlar\u0131ndan biridir. Dinamik bir sayfa olan <code>urun.php?id=123<\/code> gibi URL&#8217;leri <code>urunler\/123<\/code> gibi daha okunabilir hale getirir.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^urunler\/([0-9]+)\/?$ urun.php?id=$1 [L,QSA]\nRewriteRule ^kategori\/([a-zA-Z0-9_-]+)\/?$ kategori.php?slug=$1 [L,QSA]<\/code><\/pre>\n<p>*   \u0130lk iki <code>RewriteCond<\/code> sat\u0131r\u0131, istenen URL&#8217;nin ger\u00e7ek bir dosya (<code>-f<\/code>) veya dizin (<code>-d<\/code>) olmad\u0131\u011f\u0131n\u0131 kontrol eder. Bu, CSS, JS dosyalar\u0131 veya resimler gibi statik kaynaklar\u0131n yeniden yaz\u0131lmas\u0131n\u0131 engeller.<br \/>\n*   <code>^urunler\/([0-9]+)\/?$<\/code>: <code>\/urunler\/123<\/code> veya <code>\/urunler\/123\/<\/code> gibi URL&#8217;leri yakalar. <code>([0-9]+)<\/code> ile yakalanan say\u0131 <code>$1<\/code> olarak <code>urun.php?id=$1<\/code>&#8216;e aktar\u0131l\u0131r.<br \/>\n*   <code>^kategori\/([a-zA-Z0-9_-]+)\/?$<\/code>: <code>\/kategori\/teknoloji<\/code> veya <code>\/kategori\/bilgisayar-parcalari<\/code> gibi URL&#8217;leri yakalar. <code>([a-zA-Z0-9_-]+)<\/code> ile yakalanan slug <code>$1<\/code> olarak <code>kategori.php?slug=$1<\/code>&#8216;e aktar\u0131l\u0131r.<br \/>\n*   <code>[L,QSA]<\/code>: Kural\u0131n son oldu\u011funu belirtir ve varsa sorgu dizesini ekler.<\/p>\n<h4>5. Sondaki E\u011fik \u00c7izgiyi (Trailing Slash) Kald\u0131rma veya Ekleme<\/h4>\n<p>Tutarl\u0131 bir URL yap\u0131s\u0131 i\u00e7in sondaki e\u011fik \u00e7izgilerin y\u00f6netimi \u00f6nemlidir.<\/p>\n<p><strong>Sondaki E\u011fik \u00c7izgiyi Kald\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^(.*)\/$ \/$1 [L,R=301]<\/code><\/pre>\n<p>*   <code>RewriteCond %{REQUEST_FILENAME} !-d<\/code>: E\u011fer istek bir dizine ait de\u011filse (\u00e7\u00fcnk\u00fc dizinlerin sonunda e\u011fik \u00e7izgi olmas\u0131 beklenir).<br \/>\n<em>   <code>RewriteRule ^(.<\/em>)\/$ \/$1 [L,R=301]<\/code>: Sondaki e\u011fik \u00e7izgiyi kald\u0131r\u0131r (\u00f6rn: <code>\/sayfa\/<\/code> -> <code>\/sayfa<\/code>).<\/p>\n<p><strong>Sondaki E\u011fik \u00c7izgiyi Ekleme (Dizinler \u0130\u00e7in):<\/strong><\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REQUEST_FILENAME} -d\nRewriteRule ^(.*[^\/])$ \/$1\/ [L,R=301]<\/code><\/pre>\n<p>*   <code>RewriteCond %{REQUEST_FILENAME} -d<\/code>: E\u011fer istek bir dizine aitse.<br \/>\n<em>   <code>RewriteRule ^(.<\/em>[^\/])$ \/$1\/ [L,R=301]<\/code>: Sondaki e\u011fik \u00e7izgiyi olmayan bir dizine ekler (\u00f6rn: <code>\/dizin<\/code> -> <code>\/dizin\/<\/code>).<\/p>\n<h4>6. Eski URL&#8217;leri Yeni URL&#8217;lere Y\u00f6nlendirme<\/h4>\n<p>Web sitenizde sayfa yap\u0131lar\u0131n\u0131 de\u011fi\u015ftirdi\u011finizde veya i\u00e7erik ta\u015f\u0131d\u0131\u011f\u0131n\u0131zda eski URL&#8217;lerin hala \u00e7al\u0131\u015f\u0131r durumda olmas\u0131 veya yeni URL&#8217;lere y\u00f6nlendirilmesi gerekir.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteRule ^eski-sayfa\\.html$ \/yeni-sayfa [L,R=301]\nRewriteRule ^urunler\/eski-urun-adi$ \/urunler\/yeni-urun-adi [L,R=301]\nRewriteRule ^makaleler\/([0-9]+)\\.php$ \/blog\/$1 [L,R=301]<\/code><\/pre>\n<p>*   Bu \u00f6rnekler, eski ve yeni URL yap\u0131lar\u0131 aras\u0131ndaki birebir veya desen tabanl\u0131 e\u015fle\u015fmelerle kal\u0131c\u0131 y\u00f6nlendirmeler yapar.<\/p>\n<h4>7. Belirli IP Adreslerini Engelleme<\/h4>\n<p>\u0130stenmeyen botlar\u0131 veya k\u00f6t\u00fc niyetli kullan\u0131c\u0131lar\u0131 engellemek i\u00e7in IP tabanl\u0131 engellemeler yapabilirsiniz.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{REMOTE_ADDR} ^192\\.168\\.1\\.100$\nRewriteRule ^.*$ - [F]<\/code><\/pre>\n<p>*   <code>RewriteCond %{REMOTE_ADDR} ^192\\.168\\.1\\.100$<\/code>: E\u011fer istek 192.168.1.100 IP adresinden geliyorsa.<br \/>\n<em>   <code>RewriteRule ^.<\/em>$ - [F]<\/code>: T\u00fcm istekleri engelle (<code>-<\/code> hedef yok, <code>F<\/code> (Forbidden) 403 hatas\u0131 d\u00f6nd\u00fcr).<\/p>\n<h4>8. Hotlinking&#8217;i \u00d6nleme (Resim H\u0131rs\u0131zl\u0131\u011f\u0131n\u0131 Engelleme)<\/h4>\n<p>Ba\u015fka web sitelerinin sizin sunucunuzdaki resimleri do\u011frudan kullanmas\u0131n\u0131 (hotlinking) engelleyebilirsiniz.<\/p>\n<pre><code class=\"language-apache\">RewriteEngine On\nRewriteCond %{HTTP_REFERER} !^$\nRewriteCond %{HTTP_REFERER} !^http(s)?:\/\/(www\\.)?yourdomain\\.com [NC]\nRewriteRule \\.(jpg|jpeg|png|gif)$ - [NC,F,L]<\/code><\/pre>\n<p>*   <code>RewriteCond %{HTTP_REFERER} !^$<\/code>: \u0130stek bir referer ba\u015fl\u0131\u011f\u0131na sahipse (yani do\u011frudan girilmemi\u015fse).<br \/>\n*   <code>RewriteCond %{HTTP_REFERER} !^http(s)?:\/\/(www\\.)?yourdomain\\.com [NC]<\/code>: Referer, kendi alan ad\u0131n\u0131z de\u011filse.<br \/>\n*   <code>RewriteRule \\.(jpg|jpeg|png|gif)$ - [NC,F,L]<\/code>: <code>.jpg<\/code>, <code>.jpeg<\/code>, <code>.png<\/code>, <code>.gif<\/code> uzant\u0131l\u0131 dosyalara gelen bu t\u00fcr istekleri engelle.<\/p>\n<h3>mod_rewrite Hata Ay\u0131klama<\/h3>\n<p><code>mod_rewrite<\/code> kurallar\u0131 g\u00fc\u00e7l\u00fc oldu\u011fu kadar karma\u015f\u0131k da olabilir ve yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda web sitenizde beklenmedik davran\u0131\u015flara veya hatalara yol a\u00e7abilir. Bu nedenle, hata ay\u0131klama yetenekleri \u00e7ok \u00f6nemlidir.<\/p>\n<h4>Apache Hata G\u00fcnl\u00fckleri (Error Logs)<\/h4>\n<p>Apache&#8217;nin hata g\u00fcnl\u00fckleri, <code>mod_rewrite<\/code> ile ilgili sorunlar\u0131 tespit etmenin ilk ad\u0131m\u0131d\u0131r. Ubuntu&#8217;da bu g\u00fcnl\u00fckler genellikle <code>\/var\/log\/apache2\/error.log<\/code> konumundad\u0131r.<\/p>\n<p>Hata g\u00fcnl\u00fcklerini daha ayr\u0131nt\u0131l\u0131 hale getirmek i\u00e7in Apache konfig\u00fcrasyonunuzdaki <code>LogLevel<\/code> ayar\u0131n\u0131 <code>debug<\/code> olarak de\u011fi\u015ftirebilirsiniz. Bu, <code>mod_rewrite<\/code>&#8216;\u0131n dahili i\u015flemlerini g\u00fcnl\u00fc\u011fe kaydetmesini sa\u011flar.<\/p>\n<pre><code class=\"language-apache\"># \/etc\/apache2\/apache2.conf veya sanal ana bilgisayar\u0131n\u0131zda\nLogLevel debug<\/code><\/pre>\n<p><code>LogLevel<\/code> ayar\u0131n\u0131 de\u011fi\u015ftirdikten sonra Apache&#8217;yi yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart apache2<\/code><\/pre>\n<p><code>debug<\/code> seviyesi \u00e7ok fazla \u00e7\u0131kt\u0131 \u00fcretebilece\u011finden, hata ay\u0131klama bittikten sonra bu ayar\u0131 <code>warn<\/code> veya <code>info<\/code> gibi daha d\u00fc\u015f\u00fck bir seviyeye geri getirmeyi unutmay\u0131n.<\/p>\n<p>Apache 2.4 ve sonraki s\u00fcr\u00fcmlerde <code>RewriteLog<\/code> ve <code>RewriteLogLevel<\/code> direktifleri kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015ft\u0131r. Bunun yerine <code>LogLevel debug<\/code> kullan\u0131larak <code>mod_rewrite<\/code> olaylar\u0131 standart hata g\u00fcnl\u00fc\u011f\u00fcne yaz\u0131l\u0131r.<\/p>\n<h4>Taray\u0131c\u0131 Geli\u015ftirici Ara\u00e7lar\u0131<\/h4>\n<p>Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131ndaki &#8220;Network&#8221; (A\u011f) sekmesi, HTTP isteklerini ve yan\u0131tlar\u0131n\u0131 incelemek i\u00e7in harika bir ara\u00e7t\u0131r. \u00d6zellikle <code>R<\/code> bayra\u011f\u0131 ile yap\u0131lan y\u00f6nlendirmeleri (301, 302 durum kodlar\u0131) ve URL&#8217;nin nas\u0131l de\u011fi\u015fti\u011fini g\u00f6rmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>\u00c7evrimi\u00e7i Regex Test Ara\u00e7lar\u0131<\/h4>\n<p>D\u00fczenli ifadeler karma\u015f\u0131k olabilir. Rewrite kurallar\u0131n\u0131zdaki desenleri test etmek i\u00e7in regex101.com veya regexr.com gibi \u00e7evrimi\u00e7i regex test ara\u00e7lar\u0131n\u0131 kullanabilirsiniz. Bu ara\u00e7lar, deseninizin belirli bir dizeyle nas\u0131l e\u015fle\u015fti\u011fini g\u00f6rsel olarak g\u00f6rmenizi sa\u011flar ve yakalanan gruplar\u0131 (\u00f6rn. <code>$1<\/code>, <code>$2<\/code>) g\u00f6sterir.<\/p>\n<h3>Performans ve En \u0130yi Uygulamalar<\/h3>\n<p><code>mod_rewrite<\/code> g\u00fc\u00e7l\u00fcd\u00fcr ancak yanl\u0131\u015f kullan\u0131ld\u0131\u011f\u0131nda performans sorunlar\u0131na yol a\u00e7abilir.<\/p>\n<h4>.htaccess vs. Sunucu Konfig\u00fcrasyonu<\/h4>\n<p>Performans a\u00e7\u0131s\u0131ndan, <code>mod_rewrite<\/code> kurallar\u0131n\u0131 do\u011frudan sanal ana bilgisayar konfig\u00fcrasyon dosyalar\u0131n\u0131za (<code>\/etc\/apache2\/sites-available\/*.conf<\/code>) yazmak, <code>.htaccess<\/code> dosyalar\u0131na yazmaktan daha verimlidir. Her istekte Apache&#8217;nin <code>.htaccess<\/code> dosyalar\u0131n\u0131 aramas\u0131n\u0131 ve i\u015flemesini gerektirmez. M\u00fcmk\u00fcn oldu\u011funca <code>.htaccess<\/code> kullan\u0131m\u0131ndan ka\u00e7\u0131n\u0131n veya sadece geli\u015ftirme ortamlar\u0131nda kullan\u0131n.<\/p>\n<h4>Kural Say\u0131s\u0131n\u0131 Minimize Edin<\/h4>\n<p>\u00c7ok say\u0131da karma\u015f\u0131k <code>RewriteRule<\/code> ve <code>RewriteCond<\/code> direktifi, Apache&#8217;nin her iste\u011fi i\u015flemesi i\u00e7in daha fazla CPU zaman\u0131 harcamas\u0131na neden olabilir. Gereksiz kurallardan ka\u00e7\u0131n\u0131n ve kurallar\u0131n\u0131z\u0131 m\u00fcmk\u00fcn oldu\u011funca sade tutmaya \u00e7al\u0131\u015f\u0131n.<\/p>\n<h4><code>L<\/code> (Last) Bayra\u011f\u0131n\u0131 Ak\u0131ll\u0131ca Kullan\u0131n<\/h4>\n<p><code>L<\/code> bayra\u011f\u0131, bir kural\u0131n e\u015fle\u015fti\u011finde di\u011fer kurallar\u0131n i\u015flenmesini durdurur. Bu, hem performans\u0131 art\u0131rabilir hem de istenmeyen kural \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nleyebilir. Kurallar\u0131n\u0131z\u0131 yazarken <code>L<\/code> bayra\u011f\u0131n\u0131n nerede gerekli oldu\u011funu dikkatlice d\u00fc\u015f\u00fcn\u00fcn.<\/p>\n<h4>Yorum Sat\u0131rlar\u0131 Kullan\u0131n<\/h4>\n<p>Kurallar\u0131n\u0131z\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131 a\u00e7\u0131klayan yorum sat\u0131rlar\u0131 eklemek, gelecekte sizin veya ba\u015fka bir geli\u015ftiricinin kurallar\u0131 anlamas\u0131n\u0131 ve bak\u0131m\u0131n\u0131 yapmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Yorum sat\u0131rlar\u0131 <code>#<\/code> ile ba\u015flar.<\/p>\n<pre><code class=\"language-apache\"># HTTP'den HTTPS'e y\u00f6nlendirme\nRewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}%{REQUEST_URI} [L,R=301]<\/code><\/pre>\n<h4>Sonsuz D\u00f6ng\u00fclerden Ka\u00e7\u0131n\u0131n<\/h4>\n<p>Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir <code>RewriteRule<\/code>, s\u00fcrekli olarak kendini yeniden yazarak bir sonsuz d\u00f6ng\u00fcye neden olabilir. Bu, taray\u0131c\u0131n\u0131n &#8220;Too many redirects&#8221; hatas\u0131 vermesine veya sunucunun kaynaklar\u0131n\u0131n t\u00fckenmesine yol a\u00e7ar. Kurallar\u0131n\u0131z\u0131 test ederken bu duruma dikkat edin. Genellikle <code>RewriteCond %{REQUEST_FILENAME} !-f<\/code> ve <code>RewriteCond %{REQUEST_FILENAME} !-d<\/code> gibi ko\u015fullar, sonsuz d\u00f6ng\u00fcleri \u00f6nlemeye yard\u0131mc\u0131 olur.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p><code>mod_rewrite<\/code>, Apache web sunucusunun en g\u00fc\u00e7l\u00fc ve esnek mod\u00fcllerinden biridir. URL&#8217;leri yeniden yazma ve y\u00f6nlendirme yetene\u011fi sayesinde, web sitelerinizin kullan\u0131c\u0131 dostu, SEO uyumlu ve g\u00fcvenli olmas\u0131n\u0131 sa\u011flayabilirsiniz. Ubuntu 18.04 \u00fczerinde Apache ile <code>mod_rewrite<\/code>&#8216;\u0131 etkinle\u015ftirmek, yap\u0131land\u0131rmak ve kullanmak, yukar\u0131da ayr\u0131nt\u0131lar\u0131yla a\u00e7\u0131klanan ad\u0131mlarla olduk\u00e7a basittir.<\/p>\n<p>Bu makalede ele al\u0131nan temel direktifler (<code>RewriteEngine<\/code>, <code>RewriteCond<\/code>, <code>RewriteRule<\/code>), d\u00fczenli ifadelerin kullan\u0131m\u0131 ve yayg\u0131n senaryo \u00f6rnekleri, <code>mod_rewrite<\/code>&#8216;\u0131n sundu\u011fu imkanlara kapsaml\u0131 bir bak\u0131\u015f a\u00e7\u0131s\u0131 sunmaktad\u0131r. Hata ay\u0131klama ipu\u00e7lar\u0131 ve en iyi uygulamalar, kar\u015f\u0131la\u015fabilece\u011finiz sorunlar\u0131 \u00e7\u00f6zmenize ve kurallar\u0131n\u0131z\u0131 verimli bir \u015fekilde y\u00f6netmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Unutmay\u0131n ki <code>mod_rewrite<\/code>&#8216;\u0131n tam potansiyelini anlamak ve kullanmak, d\u00fczenli ifadeler hakk\u0131nda sa\u011flam bir bilgi ve deneme-yan\u0131lma prati\u011fi gerektirir. Kurallar\u0131n\u0131z\u0131 her zaman dikkatlice test edin ve sunucunuzun performans\u0131n\u0131 g\u00f6zlemleyin. Bu g\u00fc\u00e7l\u00fc ara\u00e7la web projelerinizi bir sonraki seviyeye ta\u015f\u0131yabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber\nGiri\u015f: mod_rewrite Nedir ve Neden \u00d6nemlidir?\nModern web uygul","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":[1468],"tags":[],"class_list":{"0":"post-39813","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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 mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde 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-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-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 mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber Giri\u015f: mod_rewrite Nedir ve Neden \u00d6nemlidir? Modern web uygul\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-24T01:40:44+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2026-02-24T01:40:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\"},\"wordCount\":2648,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\",\"name\":\"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-24T01:40:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde 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 mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde 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-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber","og_description":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber Giri\u015f: mod_rewrite Nedir ve Neden \u00d6nemlidir? Modern web uygul","og_url":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-24T01:40:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber","datePublished":"2026-02-24T01:40:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/"},"wordCount":2648,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/","name":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-24T01:40:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/apache-mod_rewrite-ile-url-yeniden-yazma-ubuntu-18-04-uzerinde-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Apache mod_rewrite ile URL Yeniden Yazma: Ubuntu 18.04 \u00dczerinde 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\/39813","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=39813"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39813\/revisions"}],"predecessor-version":[{"id":39814,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39813\/revisions\/39814"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}