| <!DOCTYPE html SYSTEM "about:legacy-compat"> |
| <html lang="tr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <meta content="width=device-width, initial-scale=1" name="viewport"> |
| <!-- |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| This file is generated from xml source: DO NOT EDIT |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| --> |
| <title>mod_rewrite ile Yeniden Yönlendirme ve Yeniden Eşleme - Apache HTTP Sunucusu Sürüm 2.5</title> |
| <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet"> |
| <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size"> |
| <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css"><link rel="stylesheet" type="text/css" href="../style/css/prettify.css"> |
| <script src="../style/scripts/prettify.min.js"> |
| </script> |
| |
| <link href="../images/favicon.png" rel="shortcut icon"></head> |
| <body id="manual-page"><div id="page-header"> |
| <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/quickreference.html">Yönergeler</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p> |
| <p class="apache">Apache HTTP Sunucusu Sürüm 2.5</p> |
| <img alt="" src="../images/feather.png"></div> |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div> |
| <div id="path"> |
| <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">HTTP Sunucusu</a> > <a href="https://httpd.apache.org/docs/">Belgeleme</a> > <a href="../">Sürüm 2.5</a> > <a href="./">Rewrite</a></div><div id="page-content"><div id="preamble"><h1>mod_rewrite ile Yeniden Yönlendirme ve Yeniden Eşleme</h1> |
| <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> |
| <div class="toplang"> |
| <p><span>Mevcut Diller: </span><a href="../de/rewrite/remapping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> | |
| <a href="../en/rewrite/remapping.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../es/rewrite/remapping.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="../fr/rewrite/remapping.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="../ja/rewrite/remapping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="../ko/rewrite/remapping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="../tr/rewrite/remapping.html" title="Türkçe"> tr </a> | |
| <a href="../zh-cn/rewrite/remapping.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> |
| </div> |
| <div class="outofdate">Bu çeviri güncel olmayabilir. Son değişiklikler için İngilizce sürüm geçerlidir.</div> |
| |
| |
| <p>Bu belge, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> |
| <a href="../mod/mod_rewrite.html">başvuru belgelerini</a> tamamlar. |
| İstekleri yeniden yönlendirmek ve yeniden eşlemek için |
| <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülünü nasıl kullanabileceğinizi |
| açıklar. Her birinin nasıl çalıştığının ayrıntılı açıklamalarını |
| içeren birçok <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> kullanım örneği |
| sunar.</p> |
| |
| <div class="warning">Bu örneklerin birçoğunun sizin sunucu yapılandırmanızda |
| değişiklik yapılmadan çalışmayacağını unutmayın; bu nedenle örnekleri |
| yapılandırmanıza kopyalayıp yapıştırmak yerine anlamanız |
| önemlidir.</div> |
| |
| </div> |
| <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#old-to-new">Eskiden Yeniye (dahili)</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#old-to-new-extern">Eskiden Yeniye Yeniden Yazma (harici)</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#movehomedirs">Başka Bir Sunucuya Taşınan Kaynak</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#static-to-dynamic">Statikten Devingene</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#backward-compatibility">Dosya Uzantısı Değişikliği için Geriye Dönük Uyumluluk</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#canonicalhost">Kurallı Konak Adları</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#multipledirs">Birden Fazla Dizinde Sayfa Arama</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#archive-access-multiplexer">Coğrafi Olarak Dağıtılmış Sunuculara Yönlendirme</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#canonicalurl">Kurallı URL'ler</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#moveddocroot">Taşınmış <code>DocumentRoot</code></a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#fallback-resource">Yedek Kaynak</a></li> |
| <li><img alt="" src="../images/down.gif"> <a href="#rewrite-query">Sorgu Dizgesini Yeniden Yazma</a></li> |
| </ul><h3>Ayrıca bakınız:</h3><ul class="seealso"><li><a href="../mod/mod_rewrite.html">Modül belgeleri</a></li><li><a href="intro.html">mod_rewrite'a giriş</a></li><li><a href="access.html">Erişim denetimi</a></li><li><a href="vhosts.html">Sanal konaklar</a></li><li><a href="proxy.html">Vekil kullanımı</a></li><li><a href="rewritemap.html">RewriteMap Kullanımı</a></li><li><a href="advanced.html">İleri teknikler</a></li><li><a href="avoid.html">mod_rewrite kullanılmaması gereken durumlar</a></li></ul></div> |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="old-to-new">Eskiden Yeniye (dahili) <a title="Permanent link" href="#old-to-new" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p><code>foo.html</code> sayfasını yakın zamanda |
| <code>bar.html</code> olarak yeniden adlandırdığımızı ve şimdi |
| geriye dönük uyumluluk için eski URL'yi sağlamak istediğimizi |
| varsayalım. Ancak eski URL kullanıcılarının sayfanın yeniden |
| adlandırıldığını fark etmemesini istiyoruz - yani adresin |
| tarayıcılarında değişmesini istemiyoruz.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>Eski URL'yi aşağıdaki kuralla dahili olarak yenisine yeniden |
| yazıyoruz:</p> |
| |
| <pre class="prettyprint lang-config">RewriteEngine on |
| RewriteRule "^<strong>/foo</strong>\.html$" "<strong>/bar</strong>.html" [PT]</pre> |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="old-to-new-extern">Eskiden Yeniye Yeniden Yazma (harici) <a title="Permanent link" href="#old-to-new-extern" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Yine <code>foo.html</code> sayfasını yakın zamanda |
| <code>bar.html</code> olarak yeniden adlandırdığımızı ve şimdi |
| geriye dönük uyumluluk için eski URL'yi sağlamak istediğimizi |
| varsayalım. Ancak bu sefer eski URL kullanıcılarının yeni URL |
| hakkında bilgilendirilmesini istiyoruz, yani tarayıcılarının |
| Konum alanı da değişmeli.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>Tarayıcının ve dolayısıyla kullanıcının görünümünün |
| değişmesini sağlayan yeni URL'ye bir HTTP yönlendirmesi |
| zorluyoruz:</p> |
| |
| <pre class="prettyprint lang-config">RewriteEngine on |
| RewriteRule "^<strong>/foo</strong>\.html$" "<strong>bar</strong>.html" [<strong>R</strong>]</pre> |
| |
| </dd> |
| |
| <dt>Tartışma</dt> |
| |
| <dd> |
| <p>Bu örnekte, <a href="#old-to-new-intern">dahili</a> örneğin |
| aksine, basitçe Redirect yönergesini kullanabiliriz. Önceki |
| örnekte <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, yönlendirmeyi istemciden |
| gizlemek için kullanılmıştı:</p> |
| |
| <pre class="prettyprint lang-config">Redirect "/foo.html" "/bar.html"</pre> |
| |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="movehomedirs">Başka Bir Sunucuya Taşınan Kaynak <a title="Permanent link" href="#movehomedirs" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Bir kaynak başka bir sunucuya taşındıysa, insanlar yer |
| imlerini güncellerken URL'lerin eski sunucuda bir süre daha |
| çalışmasını isteyebilirsiniz.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>Bu URL'leri yeni sunucuya yönlendirmek için |
| <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> kullanabilirsiniz, ancak Redirect |
| veya RedirectMatch yönergesini kullanmayı da |
| düşünebilirsiniz.</p> |
| |
| <pre class="prettyprint lang-config">#mod_rewrite ile |
| RewriteEngine on |
| RewriteRule "^/docs/(.+)" "http://new.example.com/docs/$1" [R,L]</pre> |
| |
| |
| <pre class="prettyprint lang-config">#RedirectMatch ile |
| RedirectMatch "^/docs/(.*)" "http://new.example.com/docs/$1"</pre> |
| |
| |
| <pre class="prettyprint lang-config">#Redirect ile |
| Redirect "/docs/" "http://new.example.com/docs/"</pre> |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="static-to-dynamic">Statikten Devingene <a title="Permanent link" href="#static-to-dynamic" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Statik bir sayfa olan <code>foo.html</code>'yi devingen bir |
| varyant olan <code>foo.cgi</code>'ye tarayıcı/kullanıcı fark |
| etmeden sorunsuz bir şekilde nasıl dönüştürebiliriz?</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>URL'yi CGI betiğine yeniden yazar ve işleyiciyi |
| <strong>cgi-script</strong> olarak zorlayarak bir CGI programı |
| olarak yürütülmesini sağlarız. Böylece |
| <code>/~quux/foo.html</code> isteği dahili olarak |
| <code>/~quux/foo.cgi</code>'nin çağrılmasına yol açar.</p> |
| |
| <pre class="prettyprint lang-config">RewriteEngine on |
| RewriteBase "/~quux/" |
| RewriteRule "^foo\.html$" "foo.cgi" [H=<strong>cgi-script</strong>]</pre> |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="backward-compatibility">Dosya Uzantısı Değişikliği için Geriye Dönük Uyumluluk <a title="Permanent link" href="#backward-compatibility" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p><code>document.YYYY</code>'den <code>document.XXXX</code>'e |
| geçiş yaptıktan sonra, örneğin bir dizi <code>.html</code> |
| dosyasını <code>.php</code>'ye çevirdikten sonra URL'leri nasıl |
| geriye dönük uyumlu (sanal olarak hâlâ mevcut) yapabiliriz?</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>URL, yeni uzantılı hedef dosya mevcutsa ve eski uzantılı |
| orijinal dosya mevcut değilse eski uzantıdan yeni uzantıya |
| yeniden yazılır. Aksi takdirde URL değiştirilmeden bırakılır.</p> |
| |
| <pre class="prettyprint lang-config"># document.html'yi document.php'ye yeniden yazma |
| # için geriye dönük uyumluluk kural kümesi |
| # yalnızca document.php varsa |
| <Directory "/var/www/htdocs"> |
| RewriteEngine on |
| RewriteBase "/var/www/htdocs" |
| |
| RewriteCond "$1.php" -f |
| RewriteCond "$1.html" !-f |
| RewriteRule "^(.*).html$" "$1.php" |
| </Directory></pre> |
| |
| </dd> |
| |
| <dt>Tartışma</dt> |
| <dd> |
| <p>Bu örnek, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> modülünün genellikle |
| gözden kaçan bir özelliğini kullanır: kural kümesinin yürütme |
| sırasından yararlanır. Özellikle, <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> |
| RewriteCond yönergelerini değerlendirmeden önce RewriteRule'un |
| sol tarafını değerlendirir. Sonuç olarak, RewriteCond yönergeleri |
| değerlendirildiğinde $1 zaten tanımlanmış olur. Bu, aynı temel |
| dosya adını kullanarak orijinal (<code>document.html</code>) ve |
| hedef (<code>document.php</code>) dosyaların varlığını |
| sınamamıza olanak tanır.</p> |
| |
| <p>Bu kural kümesi dizin başına bağlamda (bir <Directory> |
| bloğunda veya bir .htaccess dosyasında) kullanılmak üzere |
| tasarlanmıştır; böylece <code>-f</code> kontrolleri doğru dizin |
| yoluna bakar. Çalıştığınız dizin tabanını belirtmek için bir |
| <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code> yönergesi |
| ayarlamanız gerekebilir.</p> |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="canonicalhost">Kurallı Konak Adları <a title="Permanent link" href="#canonicalhost" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd>Bu kuralın amacı, aynı siteye erişmek için kullanılabilecek |
| diğer konak adları yerine belirli bir konak adının |
| kullanılmasını zorlamaktır. Örneğin, |
| <strong>example.com</strong> yerine |
| <strong>www.example.com</strong> kullanılmasını zorlamak |
| istiyorsanız aşağıdaki tarifin bir varyantını |
| kullanabilirsiniz.</dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| |
| <p>Bunu çözmenin en iyi yolu <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> kullanmak |
| değil, kurallı olmayan konak ad(lar)ı için bir sanal konağa yerleştirilmiş |
| <code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code> yönergesini |
| kullanmaktır.</p> |
| |
| <pre class="prettyprint lang-config"><VirtualHost *:80> |
| ServerName undesired.example.com |
| ServerAlias example.com notthis.example.com |
| |
| Redirect "/" "http://www.example.com/" |
| </VirtualHost> |
| |
| <VirtualHost *:80> |
| ServerName www.example.com |
| </VirtualHost></pre> |
| |
| |
| <p>Bunu alternatif olarak <code class="directive"><a href="../mod/core.html#if"><If></a></code> yönergesini kullanarak da |
| gerçekleştirebilirsiniz: (<strong>2.4 ve sonrası</strong>)</p> |
| |
| <pre class="prettyprint lang-config"><If "%{HTTP_HOST} != 'www.example.com'"> |
| Redirect "/" "http://www.example.com/" |
| </If></pre> |
| |
| |
| <p>Veya örneğin, sitenizin bir bölümünü HTTPS'ye yönlendirmek için |
| şunları yapabilirsiniz:</p> |
| |
| <pre class="prettyprint lang-config"><If "%{SERVER_PROTOCOL} != 'HTTPS'"> |
| Redirect "/admin/" "https://www.example.com/admin/" |
| </If></pre> |
| |
| |
| <p>Herhangi bir nedenle hâlâ <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> kullanmak |
| istiyorsanız - örneğin buna daha büyük bir RewriteRules kümesiyle |
| birlikte ihtiyaç duyuyorsanız - aşağıdaki tariflerden birini |
| kullanabilirsiniz.</p> |
| |
| <p>80 dışında bir bağlantı noktasında çalışan siteler için:</p> |
| <pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "!^www\.example\.com" [NC] |
| RewriteCond "%{HTTP_HOST}" "!^$" |
| RewriteCond "%{SERVER_PORT}" "!^80$" |
| RewriteRule "^/?(.*)" "http://www.example.com:%{SERVER_PORT}/$1" [L,R,NE]</pre> |
| |
| |
| <p>80 bağlantı noktasında çalışan bir site için</p> |
| <pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "!^www\.example\.com" [NC] |
| RewriteCond "%{HTTP_HOST}" "!^$" |
| RewriteRule "^/?(.*)" "http://www.example.com/$1" [L,R,NE]</pre> |
| |
| |
| <p> |
| Bunu tüm alan adları için genel olarak yapmak istiyorsanız - |
| yani tüm olası <strong>example.com</strong> değerleri için |
| <strong>example.com</strong>'u |
| <strong>www.example.com</strong>'a yönlendirmek istiyorsanız - |
| aşağıdaki tarifi kullanabilirsiniz:</p> |
| |
| <pre class="prettyprint lang-config">RewriteCond "%{HTTP_HOST}" "!^www\." [NC] |
| RewriteCond "%{HTTP_HOST}" "!^$" |
| RewriteRule "^/?(.*)" "http://www.%{HTTP_HOST}/$1" [L,R,NE]</pre> |
| |
| |
| <p>Bu kural kümeleri, ana sunucu yapılandırma dosyanızda veya |
| sunucunun <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> |
| dizinine yerleştirilen bir <code>.htaccess</code> dosyasında |
| çalışacaktır.</p> |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="multipledirs">Birden Fazla Dizinde Sayfa Arama <a title="Permanent link" href="#multipledirs" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Belirli bir kaynak birkaç yerden birinde olabilir ve |
| istendiğinde bu yerlerde kaynağı aramak istiyoruz. Belki yakın |
| zamanda dizin yapımızı yeniden düzenledik ve içeriği birkaç |
| konuma böldük.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>Aşağıdaki kural kümesi, kaynağı bulmak için iki dizinde |
| arama yapar ve hiçbirinde bulamazsa istenen konumdan sunmayı |
| dener.</p> |
| |
| <pre class="prettyprint lang-config">RewriteEngine on |
| |
| # önce dir1/ içinde bulmayı dene |
| # ...ve bulunursa dur ve mutlu ol: |
| RewriteCond "%{DOCUMENT_ROOT}/<strong>dir1</strong>/%{REQUEST_URI}" -f |
| RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/<strong>dir1</strong>/$1" [L] |
| |
| # sonra dir2/ içinde bulmayı dene |
| # ...ve bulunursa dur ve mutlu ol: |
| RewriteCond "%{DOCUMENT_ROOT}/<strong>dir2</strong>/%{REQUEST_URI}" -f |
| RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/<strong>dir2</strong>/$1" [L] |
| |
| # yoksa diğer Alias veya ScriptAlias yönergeleri vb. için devam et. |
| RewriteRule "^" "-" [PT]</pre> |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="archive-access-multiplexer">Coğrafi Olarak Dağıtılmış Sunuculara Yönlendirme <a title="Permanent link" href="#archive-access-multiplexer" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Web sitemizin çok sayıda yansısı var ve insanları bulundukları |
| ülkedeki yansıya yönlendirmek istiyoruz.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>İstemcinin konak adına bakarak hangi ülkeden geldiklerini |
| belirliyoruz. IP adreslerini çözümleyemezsek öntanımlı bir |
| sunucuya geri dönüyoruz.</p> |
| <p>Kullanmak istediğimiz sunucuların listesini oluşturmak için |
| bir <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code> |
| yönergesi kullanacağız.</p> |
| |
| <pre class="prettyprint lang-config">HostnameLookups on |
| RewriteEngine on |
| RewriteMap multiplex "txt:/path/to/map.mirrors" |
| RewriteCond "%{REMOTE_HOST}" "([a-z]+)$" [NC] |
| RewriteRule "^/(.*)$" "${multiplex:<strong>%1</strong>|http://www.example.com/}$1" [R,L]</pre> |
| |
| |
| <div class="example"><p><code> |
| ## map.mirrors -- Çoğullama Eşlem Dosyası<br> |
| <br> |
| de http://www.example.de/<br> |
| uk http://www.example.uk/<br> |
| com http://www.example.com/<br> |
| ##EOF## |
| </code></p></div> |
| </dd> |
| |
| <dt>Tartışma</dt> |
| <dd> |
| <div class="warning">Bu kural kümesi, <code class="directive"><a href="../mod/core.html#hostnamelookups">HostNameLookups</a></code> yönergesinin |
| <code>on</code> olarak ayarlanmasına dayanır; bu da önemli bir |
| performans etkisi olabilir.</div> |
| |
| <p><code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> |
| yönergesi, istemcinin konak adının son bölümünü - ülke kodunu - |
| yakalar ve ardından gelen RewriteRule bu değeri eşlem dosyasında |
| uygun yansı konağını aramak için kullanır.</p> |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="canonicalurl">Kurallı URL'ler <a title="Permanent link" href="#canonicalurl" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Bazı web sunucularında bir kaynak için birden fazla URL |
| bulunur. Genellikle kurallı URL'ler (gerçekten kullanılan ve |
| dağıtılan) ve kısayollar, dahili URL'ler vb. vardır. Kullanıcı |
| istekle hangi URL'yi sağlamış olursa olsun, sonunda tarayıcı |
| adres çubuğunda kurallı olanı görmelidir.</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p>Tüm kurallı olmayan URL'leri tarayıcının Konum görünümünde |
| düzeltmek ve sonraki tüm istekler için harici bir HTTP |
| yönlendirmesi yapıyoruz. Aşağıdaki örnek kural kümesinde |
| <code>/puppies</code> ve <code>/canines</code> yollarını |
| kurallı <code>/dogs</code> ile değiştiriyoruz.</p> |
| |
| <pre class="prettyprint lang-config">RewriteRule "^/(puppies|canines)/(.*)" "/dogs/$2" [R]</pre> |
| |
| </dd> |
| |
| <dt>Tartışma:</dt> |
| <dd> |
| Bu gerçekten Redirect veya RedirectMatch yönergeleriyle |
| gerçekleştirilmelidir: |
| |
| <pre class="prettyprint lang-config">RedirectMatch "^/(puppies|canines)/(.*)" "/dogs/$2"</pre> |
| |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="moveddocroot">Taşınmış <code>DocumentRoot</code> <a title="Permanent link" href="#moveddocroot" class="permalink">¶</a></h2> |
| |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| |
| <dd> |
| <p>Genellikle web sunucusunun <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> dizini doğrudan |
| "<code>/</code>" URL'siyle ilişkilidir. Ancak çoğu zaman bu veriler |
| gerçekten en üst düzey önceliğe sahip değildir. Örneğin, siteye ilk |
| giren ziyaretçilerin belirli bir <code>/about/</code> alt dizinine |
| yönlendirilmesini isteyebilirsiniz. Bu, aşağıdaki kural kümesi |
| kullanılarak gerçekleştirilebilir:</p> |
| </dd> |
| |
| <dt>Çözüm:</dt> |
| |
| <dd> |
| <p><code>/</code> URL'sini <code>/about/</code> adresine |
| yönlendiriyoruz:</p> |
| |
| <pre class="prettyprint lang-config">RewriteEngine on |
| RewriteRule "^/$" "/about/" [<strong>R</strong>]</pre> |
| |
| |
| <p>Bunun <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code> |
| yönergesi kullanılarak da ele alınabileceğini unutmayın:</p> |
| |
| <pre class="prettyprint lang-config">RedirectMatch "^/$" "http://example.com/about/"</pre> |
| |
| |
| <p>Ayrıca örneğin yalnızca kök URL'yi yeniden yazdığını unutmayın. |
| Yani <code>http://example.com/</code> isteğini yeniden yazar ancak |
| <code>http://example.com/page.html</code> isteğini yeniden yazmaz. |
| Belge kökünüzü gerçekten değiştirdiyseniz - yani tüm içeriğiniz |
| aslında o alt dizindeyse - <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code> yönergesini değiştirmek veya |
| tüm içeriği bir dizin yukarı taşımak, URL'leri yeniden yazmaktan |
| çok daha tercih edilir.</p> |
| </dd> |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="fallback-resource">Yedek Kaynak <a title="Permanent link" href="#fallback-resource" class="permalink">¶</a></h2> |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| <dd>Belirli bir dizine gelen tüm istekleri, bir resim veya css |
| dosyası gibi mevcut bir kaynağa gitmesi gerekenler dışında tek bir |
| kaynağın (örneğin index.php gibi belirli bir dosyanın) işlemesini |
| istiyorsunuz.</dd> |
| |
| <dt>Çözüm:</dt> |
| <dd> |
| <p>2.2.16 sürümünden itibaren bunun için <code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code> yönergesini |
| kullanmalısınız:</p> |
| |
| <pre class="prettyprint lang-config"><Directory "/var/www/my_blog"> |
| FallbackResource index.php |
| </Directory></pre> |
| |
| |
| <p>Ancak Apache'nin önceki sürümlerinde veya ihtiyaçlarınız bundan |
| daha karmaşıksa, aynı şeyi gerçekleştirmek için aşağıdaki yeniden |
| yazma kümesinin bir varyasyonunu kullanabilirsiniz:</p> |
| |
| <pre class="prettyprint lang-config"><Directory "/var/www/my_blog"> |
| RewriteBase "/my_blog" |
| |
| RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-f |
| RewriteCond "/var/www/my_blog/%{REQUEST_FILENAME}" !-d |
| RewriteRule "^" "index.php" [PT] |
| </Directory></pre> |
| |
| |
| <p>Diğer taraftan, istenen URI'yi index.php'ye sorgu dizgesi |
| argümanı olarak geçirmek isterseniz, o RewriteRule'u şununla |
| değiştirebilirsiniz:</p> |
| |
| <pre class="prettyprint lang-config">RewriteRule "(.*)" "index.php?$1" [PT,QSA]</pre> |
| |
| |
| <p>Bu kural kümelerinin bir <code>.htaccess</code> dosyasında ve |
| bir <Directory> bloğunda da kullanılabileceğini unutmayın.</p> |
| |
| </dd> |
| |
| </dl> |
| |
| </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> |
| <div class="section"> |
| <h2 id="rewrite-query">Sorgu Dizgesini Yeniden Yazma <a title="Permanent link" href="#rewrite-query" class="permalink">¶</a></h2> |
| |
| |
| <dl> |
| <dt>Açıklama:</dt> |
| <dd>Bir sorgu dizgesinden belirli bir değeri yakalamak ve onu |
| değiştirmek veya URL'nin başka bir bileşenine dahil etmek |
| istiyorsunuz.</dd> |
| |
| <dt>Çözümler:</dt> |
| <dd> |
| <p>Bu bölümdeki çözümlerin birçoğu aynı koşulu kullanır; bu koşul |
| eşleşen değeri %2 geri başvurusunda bırakır. %1 sorgu dizgesinin |
| başlangıcıdır (ilgili anahtara kadar) ve %3 geri kalanıdır. Bu |
| koşul, esneklik ve değiştirmelerde çift '&&' oluşmasını |
| önlemek için biraz karmaşıktır.</p> |
| <ul> |
| <li>Bu çözüm eşleşen anahtarı ve değeri kaldırır: |
| |
| <pre class="prettyprint lang-config"># mykey=??? öğesini kaldır |
| RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$" |
| RewriteRule "(.*)" "$1?%1%3"</pre> |
| |
| </li> |
| |
| <li>Bu çözüm, yakalanan değeri URL değiştirmesinde kullanır ve |
| sonuna '?' ekleyerek orijinal sorgu dizgesinin geri kalanını |
| atar: |
| |
| <pre class="prettyprint lang-config"># Sorgu dizgesinden PATH_INFO'ya kopyala |
| RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$" |
| RewriteRule "(.*)" "$1/products/%2/?" [PT]</pre> |
| |
| </li> |
| |
| <li>Bu çözüm, yakalanan değeri sonraki bir koşulda kontrol eder: |
| |
| <pre class="prettyprint lang-config"># Sorgu dizgesindeki mykey değerini yakala |
| RewriteCond "%{QUERY_STRING}" "(.*(?:^|&))mykey=([^&]*)&?(.*)&?$" |
| RewriteCond "%2" !=not-so-secret-value |
| RewriteRule "(.*)" "-" [F]</pre> |
| |
| </li> |
| |
| <li>Bu çözüm, önceki çözümlerin tersini gösterir: yol bileşenlerini |
| (belki PATH_INFO) URL'den sorgu dizgesine kopyalar. |
| <pre class="prettyprint lang-config"># İstenen URL /products/kitchen-sink olabilir ve betik |
| # /path?products=kitchen-sink bekler. |
| RewriteRule "^/?path/([^/]+)/([^/]+)" "/path?$1=$2" [PT]</pre> |
| |
| </li> |
| </ul> |
| |
| </dd> |
| |
| </dl> |
| </div></div> |
| <div class="bottomlang"> |
| <p><span>Mevcut Diller: </span><a href="../de/rewrite/remapping.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> | |
| <a href="../en/rewrite/remapping.html" hreflang="en" rel="alternate" title="English"> en </a> | |
| <a href="../es/rewrite/remapping.html" hreflang="es" rel="alternate" title="Español"> es </a> | |
| <a href="../fr/rewrite/remapping.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | |
| <a href="../ja/rewrite/remapping.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | |
| <a href="../ko/rewrite/remapping.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | |
| <a href="../tr/rewrite/remapping.html" title="Türkçe"> tr </a> | |
| <a href="../zh-cn/rewrite/remapping.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> |
| </div><div id="footer"> |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br><a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> adı altında lisanslıdır.</p> |
| <p class="menu"><a href="../mod/">Modüller</a> | <a href="../mod/quickreference.html">Yönergeler</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">SSS</a> | <a href="../glossary.html">Terimler</a> | <a href="../sitemap.html">Site Haritası</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p></div><script><!--//--><![CDATA[//><!-- |
| if (typeof(prettyPrint) !== 'undefined') { |
| prettyPrint(); |
| } |
| var langToggle = document.querySelector('.lang-toggle'); |
| var topLang = document.querySelector('.toplang'); |
| if (langToggle && topLang) { |
| langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); |
| } |
| var qv = document.getElementById('quickview'); |
| if (qv) { |
| document.body.appendChild(qv); |
| var qvBtn = document.createElement('button'); |
| qvBtn.className = 'qv-toggle'; |
| qvBtn.setAttribute('aria-label', 'Toggle page navigation'); |
| qvBtn.innerHTML = '☰'; |
| document.body.appendChild(qvBtn); |
| qvBtn.addEventListener('click', function() { |
| var isOpen = qv.classList.toggle('open'); |
| if (isOpen) { |
| qv.style.top = window.scrollY + 10 + 'px'; |
| } |
| }); |
| window.addEventListener('scroll', function() { qv.classList.remove('open'); }); |
| } |
| //--><!]]></script> |
| </body></html> |