| Apache mod_rewrite | .htaccess ile URL yönlendirme |
|
There are no translations available. Apache re_write URL dizilerinin sayfa açılımı sırasında değiştirilmesine olanak veren bir apache web sunucusu modülüdür. mod_rewrite'ın ilk başta anlaşılması zor gelebilir ancak ne yaptığınızı biliyorsanız çok kullanışlı bir araç haline gelecektir. Üretici firmanın sağladığı mod_rewrite belgeleri bu linktedir. Apache mod_rewrite kullanım alanları:
gibi amaçlar için kullanılır.
Apache Mod_rewrite kullanabilmeniz için httpd.conf ya da VirtualHost ayarlarında şu ibarelerin olması gerekmektedir: OPTIONS FollowSymLinks
# ya da OPTIONS All #ve AllowOverride All #ya da AllowOverride FileInfo
mod_rewrite'ı kullanmak için web sitenizin kök dizininde bir ".htaccess" dosyası oluşturmanız gerekmektedir. UNIX türevi işletim sistemlerinde gizli dosyaların başına nokta koyulur, FTP gibi erişim programlarında htaccess dosyasının görünmemesinin sebebi budur. Bu nedenle htaccess dosyasının bir yedeğini mutlaka tutunuz. .htaccess dosyası şu ifade ile başlamalıdır: # Apache URLleri degistireceğimizi bilmelidir rewrite bir algoritma gibi çalışmaktadır, öncelikle ona hangi istekleri değiştireceğimizi söylemeliyiz bunu RewriteCond ifadesi ile yapıyoruz. RewriteCond ifadesiKullanım şekli: RewriteCond [İFADE]+[NC]+[OR] RewriteCond apache ile temas kuran tarayıcının (Internet Explorer, Mozilla Firefox ve Google Chrome gibi) apache'ye gönderdiği ön bilgilerden, IP adresinden ya da yönlendiren sitelerden gelen bilgileri işler, en çok kullanılan ifadeler şunlardır: REQUEST_FILENAME : istenilen sayfanın ismi (index.php gibi) [NC] (No Case)
RewriteRule ifadesiBu ifade ile bulunan koşuldan sonra URL'nin nasıl yazdırılacağı belirtilir: [R] (yönlendirmeye zorla)
Örneklerle hepsini bir araya toplayalım: Resim dosyalarınızın site dışından çağırılmasını engellemekRewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !^http://alanadiniz.com [NC] RewriteCond %{HTTP_REFERER} !^http://www.alanadini.com [NC] RewriteCond %{HTTP_REFERER} !^http://192.168.1.10 [NC] RewriteRule ^.*$ http://www.alanadiniz.com/hotlink.jpg [R,L] Türkçesi: Alan adınızın alanadiniz.com olduğunu ve bu alan adının sunulduğu IP adresinin 192.168.1.10 olduğunu varsayarak Alternatif: RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?alanadiniz\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://www.alanadiniz.com/hotlink.jpg [L] Ayrıca, başka bir resime yönlendirmek yerine [F] ile yasaklayabilirsiniz: RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]
www yönlendirmealanadiniz.com, ikincialanadiniz.com gibi birden çok alan adı aynı siteye açılıyorsa ya da bütün sitelerin önünde mutlaka www. olmasını istiyorsanız aşağıdaki örneği kullanabilirsiniz:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.alanadiniz.com$ [NC] RewriteRule ^(.*)$ http://www.alanadiniz.com/$1 [R,L]
Tarayıcıya göre yönlendirmeTarayıcıya göre yönlendirme, özellikle tarayıcılar arasında javascript veya css yorumlamada farklılıklar olduğunda kullanılır. Ayrıca googlebot gibi sitenizi arama motorlarında indeksleyen tarayıcıları da daha sade içerikli, içerisinde javascriptler ve css bulunmayan bir sayfaya da yönlendirebilirsiniz. Bu şekilde arama motorlarının hata yapma olasılığı azalır ve daha üst sıralarda yer alabilirsiniz. RewriteEngine On
# MS Internet Explorer - Mozilla v4 RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4(.*)MSIE RewriteRule ^index\.html$ /explorer.html [L] # Chrome - Mozilla v5 - Firefox kuralindan once olmalidir RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5(.*)Chrome RewriteRule ^index\.html$ /chrome.html [L] # Firefox - Mozilla v5 RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5(.*)Gecko RewriteRule ^index\.html$ /firefox.html [L] # Googlebot RewriteCond %{HTTP_USER_AGENT} ^Googlebot/2(.*)googlebot RewriteRule ^index\.html$ /google.html [L] # Lynx ya da Mozilla v1/2 RewriteCond %{HTTP_USER_AGENT} ^Lynx/ [OR] RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12] RewriteRule ^index\.html$ /resimsiz.html [L] # Diğerleri RewriteRule ^index\.html$ /index.html [L]
Günün saatine göre farklı açılış sayfasıRewriteEngine On
RewriteBase / # 5:00 > < 8:00 RewriteCond %{TIME_HOUR} >02 RewriteCond %{TIME_HOUR} <05 RewriteRule ^index\\.html$ /gunduz.html # 8:00 > < 16:00 RewriteCond %{TIME_HOUR} >05 RewriteCond %{TIME_HOUR} <13 RewriteRule ^index\\.html$ /gun.html # 16:00 > < 22:00 RewriteCond %{TIME_HOUR} >13 RewriteCond %{TIME_HOUR} <19 RewriteRule ^index\\.html$ /aksam.html # 22:00 > < 05:00 RewriteCond %{TIME_HOUR} >19 RewriteCond %{TIME_HOUR} <02 RewriteRule ^index\\.html$ /gece.html
HTTP sayfayı HTTPS'e yönlendirmeRewriteEngine on
rewritecond %{https} !^on$ rewritecond %{QUERY_STRING} siparis$ [NC] RewriteRule .* https://alanadiniz.com/siparis [R=301,L]
Tarayıcı Diline Göre YönlendirmeRewriteEngine on
# ingilizce RewriteCond %{HTTP:Accept-Language} ^en [NC] RewriteRule ^$ /en/ [L,R=301] # Almanca RewriteCond %{HTTP:Accept-Language} ^de [NC] RewriteRule ^$ /de/ [L,R=301] # ispanyolca RewriteCond %{HTTP:Accept-Language} ^es [NC] RewriteRule ^$ /es/ [L,R=301] #Diger butun diller ve Varsayilan dil Turkce RewriteRule ^$ /tr/ [L,R=301]
Birden çok alan adını tek bir alan adında toplamakEğer sitenize ait birden çok alan adı varsa, örneğin veriportal.com, veriportal.net, veriportal.com.tr gibi ve sadece bir siteden bu sayfaların açılmasını istiyorsanız (istemelisiniz çünkü site rankınız bölünecektir) aşaıdaki adımları uygulayınız: RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?veriportal.org [NC,OR] RewriteCond %{HTTP_HOST} ^(www\.)?veriportal.info [NC,OR] RewriteCond %{HTTP_HOST} ^(www\.)?veriportal.net [NC,OR] RewriteCond %{HTTP_HOST} ^(www\.)?veriportal.com.tr [NC] RewriteRule ^(.*)$ http://www.veriportal.com/$1 [R=301,NC, L]
|