linux tabanlı serverlarda .htaccess kullanımı

PHP, MySQL, HTML, CSS, SEO vb. ile ilgili genel konular.

linux tabanlı serverlarda .htaccess kullanımı

İleti

Matmazella
18.11.2005, 07:49

http://www.horozz.net/v7/haber.oku.php?id=27&yid=1


.htaccess kullanımını öğrenelim


Çok basit kodlar oluşturarak oldukça başarılı işler yapabilir ve satır satır kodlarla kafamız allak bullak olmadan hız kazanabiliriz. Nasıl mı? Bir okuyun...

Klasörlerinize şifre koymak, hot link korumas, IP banlama, site banlama, index klasörünü değiştirmek, yönlendirme yapmak ve .html uzantılı dosyalarda php kodlarını çalıştırmak gibi işlemleri yapabilmemizi sağlayan bir özellik. Nasıl yapıldığını tarif edeyim.


--------------------------------------------------------------------------------


Şifre korumalı klasör yapalım.
önce iki tane dosya yaratıyoruz sunucuda. Bunlardan birinin adı .htpasswd diğerinin adı .htaccess

.htaccess dosyası:
İçeriğine aşşağıdaki kodları ekliyoruz.

[syntax="apache"]AuthUserFile /home/fizikselpath/.htpasswd (fiziksel path sunucudaki yoldur, parantezi yazmayın)
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic

require user kullanici1[/syntax]

.htpasswd dosyasının içeriği
Kod: Tümünü seç
kullanici1:sifre


Evey bu iki dosyayı sunucumuzda hangi klasöre atıyorsak o klasör şifreleniyor.


--------------------------------------------------------------------------------


IP Banlama yapalım
Sunucunuzun root klasöründe .htaccess adlı bır dosya yaratalım ve içine şu kodları yazalım.

[syntax="apache"]order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
deny from IP ADRESİ
deny from IP ADRESİ
allow from all[/syntax]

Bu kodlara yeni satırlar ekleyerek ban işlemini gerçekleştirebilirsiniz.


--------------------------------------------------------------------------------


Referrer engelleme ile flood'un önüne geçelim
Bazı proxyler kullanılarak sitenize saldırı olabilir. Refferrer kayıtlarını alıp domainleri .htaccess ile banlayarak flood saldırılarından kurtulmanız mümkün.

[syntax="apache"]RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} engellenensite\.com [NC,OR]
RewriteCond %{HTTP_REFERER} digerengellenensite\.com
RewriteRule .* - [F][/syntax]

Bu satırları çoğaltarak domain sayısını arttırın.


--------------------------------------------------------------------------------


Hot link koruması yapalım
Özellikle download ve mp3 sitesi yapan arkadaşların çok işine yarar diye düşünüyorum. Aşşağıdaki kodları dosyalarınızın olduğu klasörün içinde .htaccess adlı boş bir döküman yaratıp içine yerleştirin. Dosyalarınızı sizin siteniz dışından hiçkimse alamaz.

[syntax="apache"]RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sizinsiteniz.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css\mp3\zip\rar\exe)$ - [F][/syntax]
Kullanıcı avatarı
Matmazella
Site Yöneticisi
Site Yöneticisi
 
İleti: 2563
Kayıt: 30.06.2005, 09:08

Cvp: linux tabanlı serverlarda .htaccess kullanımı

İleti DeJaVu 18.11.2005, 09:02

Hata sayfalarımızı özelleştirme:
Bilirsiniz, ziyaretçiler Web sitenizde bir sayfayı bulamayınca ya da bir server hatası olunca karşımıza (çoğu zaman İngilizce) bir hata sayfası çıkar. Bu sayfaları kendi web sayfanızın tasarımına uygun olarak özelleştirmek isterseniz?En sık karşılaşılan hata mesajları 404 Sayfa Bulunamadı ve 500 Server Hatası'dır.
Şimdi, bir .htaccess dosyası açıp içine aşağıdaki kodları yazın:
Kod: Tümünü seç
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

Sonra 404.html ve 500.html olarak iki tane sayfa hazırlayın (içine istediğiniz gibi yazılarınızı ve tasarımınızı yerleştirin) ve hazırladığınız tüm dosyaları sunucunuza yükleyin. Şimdi web sitenizde bir sayfa bulunamadığında ya da bir hata olduğunda karşınıza sizin özel hazırladığınız sayfalar çıkacak! (html dosyalarına başka isimler de verebilirsiniz, 404.html ve 500.html yazmanız şart değil. Ama dosya adlarını .htaccess kodunda da değiştirmelisiniz.)
Bir sayfayı başka bir sayfaya yönlendirme:
Diyelim ki Web sitenizdeki bir sayfayı daha önceden birçok insan bookmark etmiş ve sürekli ziyaret ediyor. Ama siz bu sayfanın dizinini değiştirmek istiyorsunuz ve bunu yaptığınızda ziyaretçilerin eski sayfa adresine gittiğinde "Sayfa görüntülenemiyor!" mesajını almasını istemiyorsunuz. Bunun için .htaccess kodumuz:
Kod: Tümünü seç
Redirect /eski klasör/eski.html http://www.sitenizin adresi.com/yeni klasör/yeni.html

Yukarıdaki kodu kendi bilgilerinize göre özelleştirip web sitenize yükleyin.
Html dosyaları php kodlarını yorumlasın!
Bildiğiniz gibi php kodları ancak .php uzantılı web sayfalarında çalışır. Pekiyi diyelim ki .html uzantılarıyla 100 sayfalık bir site yaptınız, ve bir gün sitenizde php kullanmaya karar verdiniz… Şimdi bütün sayfaların uzantılarını ve sayfalar arasındaki linkleri tümden değiştirmeniz mi lazım?? Şüphesiz hayır.
Kod: Tümünü seç
AddType application/x-httpd-php .html

.htaccess dosyasına yazacağınız bu kod sayesinde .html uzantılı dosyalarınız php kodlarını sorunsuz olarak çalıştıracaktır. Eğer isterseniz .html yerine başka uzantı da yazabilir ya da birden fazla uzantıya php kullanımı için izin verebilirsiniz.
Kod: Tümünü seç
AddType application/x-httpd-php .html .htm .txt


Html sayfalarımda SSI çalışsın!
SSI (Server Side Include) Apache serverin sunduğu bir başka muhteşem özelliktir. Bu özellik sayesinde bir sayfayı bir başka sayfa içinde tek satır kod yazarak görüntülemek mümkündür ().
Eğer aksini belirtmezseniz bu özellik sadece .shtml ve .shtm uzantılı sayfalarda çalışır. Bu özelliği normal .html uzantılı dosyalarınızda kullanmak isterseniz…
Kod: Tümünü seç
AddType text/html .shtml
AddHandler server-parsed .html
Options Indexes FollowSymLinks Includes

Kodunu .htaccess dosyanıza yazmanız yeterlidir! İkinci satır sonundaki .html sunucuya (.html uzantılı dosyalarda SSI özelliğini kullan) der. İkinci satırdaki kodu başka uzantılar içinde ekleyerek bu özelliği diğer sayfalarınıza da verebilirsiniz:
Kod: Tümünü seç
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .htm
Options Indexes FollowSymLinks Includes

Ana sayfamızı değiştirelim!
Web tarayıcınıza Web adresinizi yazdığınızda karşınıza ilk çıkan sayfa index.htm, index.html, default.htm gibi, sunucu tarafından önceden tanımlanmış default sayfadır.
Pek iyi diyelim ki sitenizin ana sayfasında güncelleme yapıyorsunuz ve bu süre içinde sitenizi kapatmak istemiyorsunuz. Ne yapacaksınız? Efendim? İndex sayfanızın adını mı değiştireceksiniz? Yok hiç gerek yok! DirectoryIndex dosyaadı.html
Bu kodu ziyaretçilerin sitenize girdiği zaman ilk görmesini istediğiniz sayfaya göre değiştirin ve siz arka planda rahat rahat çalışın… İşiniz bitince .htaccess dosyasını siliverin.

Dizinin görüntülenmesini engelleyin
Bazı sunucularda eğer bir dizinde bir index sayfası bulunmuyorsa o dizin içindeki tüm dosyalar alt alta Web tarayıcısında görünür! Bu özellikle herkesin erişmesini istemediğimiz sayfaların bulunduğu (örneğin şifrelerimizin yazılı olduğu bir dosya olabilir) dizinlerde büyük bir güvenlik açığı yaratır. Hatayla index sayfasını silerseniz, başınıza iş açabilirsiniz. Bu sorunu engellemek için, aşağıdaki kodu özelleştirin ve korumak istediğiniz dizine yükleyin:
Kod: Tümünü seç
IndexIgnore *

Eğer bu dizinde sadece jpeg ve gif uzantılı resim dosyalarının görüntülenmesini istiyorsanız o zaman;
Kod: Tümünü seç
IndexIgnore *.gif *.jpg

yazın (Aynı formatta istediğiniz gibi bu satıra uzantı ekleyebilirsiniz).

İstemediğiniz kişiler sayfanıza girmesin!(ALEXİS) vermiş gerçiBazı dizinlerinize herkesin ulaşmasını istemeyebilirsiniz.
Kod: Tümünü seç
order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
allow from all

Bu satırlar şu anlama geliyor… Bu dizindeki sayfalara Internete 123.45.6.7 ve 012.34.5. IP numarası ile bağlanan kişiler giremesin, diğer herkes girsin! IP numaraları superonline, ttn.net gibi bir servis sağlayıcı ile Internet'e bağlananlar için sürekli değişir, ancak kendi serverlarından bağlanan şirketler, kişiler için sabittir. İsterseniz kodu şöyle de yazabilirsiniz:
Kod: Tümünü seç
order allow,deny
deny from .superonline.com
allow from all

Bu şekilde sitenize superonline üzerinden erişimi engellemiş olursunuz (bunu neden yapmak gereği duyacağınızı sormayın, benim işim kodları anlatmak.)
Ya da;
Kod: Tümünü seç
order allow,deny
deny from all
allow from .superonline.com

yazarak sitenize sadece superonline üzerinden erişim sağlayabilir, diğerlerini bloke edebilirsiniz. Bu, özellikle sabit IP ile kendi serveri ile İnternete bağlanan bir şirkette, sadece çalışanların görmesi için bir dizin yaratmak için iyi bir alternatiftir (örnek: allow from .sirketiniz.com.) .htaccess ile şifre ile girilen sayfalar yaratmak, site abone sistemleri yaratmak da mümkün. Ancak işin bu tarafını da anlatmak için en az bir bu kadar sayfaya daha ihtiyaç ...

not:Eğer .htaccess dosyası ile yaptığınız değişikliğin tüm Web siteniz için geçerli olmasını istiyorsanız, bu dosyayı Web sitenizin ana dizinine yüklemelisiniz. Yok hayır, sadece bir klasör içindeki dokümanları etkilesin diyorsanız o zaman yüklemeyi ilgili klasöre yapacaksınız.
Kullanıcı avatarı
DeJaVu
Üye
Üye
 
İleti: 12
Kayıt: 11.11.2005, 08:16

İleti chronic 01.09.2006, 08:11

arkadaşlar ben de linux tabanlı server kullanıyorum .htaccess ile "safe mode off" gösterilebiliyormuş, bilen varsa bizle de paylaşabilir mi?
chronic
Üye
Üye
 
İleti: 2
Kayıt: 04.06.2006, 21:20

İleti

Matmazella
01.09.2006, 08:36

Kullanıcı avatarı
Matmazella
Site Yöneticisi
Site Yöneticisi
 
İleti: 2563
Kayıt: 30.06.2005, 09:08

İleti chronic 01.09.2006, 23:48



üstat walla 1 saat boyunca baktım baktım ama anlamadım nasıl halledeceğimi, var mı bi kolayı, türkçesi veya? :$
chronic
Üye
Üye
 
İleti: 2
Kayıt: 04.06.2006, 21:20

İleti viper_aykiri 09.10.2006, 19:31

ya arkadaşlar ben siteme plus kurdum ve sitemin urlsine tıkladığım zaman site anasayfası yerine public_html klasörü görünüyor ve oradan phpBB2 klasörüne tıkladığımda siteye giriliyor acaba htaccess dosyasına ne yazmam gerek yardımlarınız için saolun...
viper_aykiri
Üye
Üye
 
İleti: 26
Kayıt: 15.08.2006, 14:48
Konum: İstanbul

Cvp: linux tabanlı serverlarda .htaccess kullanımı

İleti hope 09.10.2006, 22:47

bende bu soruyu yaklaşık 1 ay boyunca 5 sitede sordum ve cevabını alamadım daha sonra google da aradım ve kendim buldum ve rahatladım :D .htaccess dosyasına aşağıdaki kodu yaz

[syntax="php"]Redirect /index.php http://www.seninsiten.com/phpBB2[/syntax]

Not: Ana dizinde index.php dosyası olmasına gerek yok
hope
Üye
Üye
 
İleti: 64
Kayıt: 09.11.2005, 22:45

İleti toygar61 16.10.2006, 20:37

Arkadaşlar bana yardım ederseniz çok sevinirim.

Sorunum şu şimdi .htaccess ile belli bir sayfayı sadece listelenen IP lerin görmesini erişmesini istiyorum.Listede olmayan IP lerin ise başka bir sayfaya yönlenmelerini istiyorum ancak bu yönlenme olayını başarabilmiş değilim elimdeki kodu buraya ekliyorum.

#deny all access
deny from all
allow from 22.11.33.44
allow from 85.95.22.11

Options All -Indexes
ErrorDocument 404 /index.html

Şimdi burda yukardaki ilk kod iyi bir şekilde çalışıyor belirtilen ıpleri ayıklıyor diğer listede olmayan ıplerin ise erişimini engelliyor.

2.ci komut çalışmıyor onuda başka bir siteden sayfa yönlendirme hakkında bir kod.

Bana yukarda bahsettiğim gibi belirtilen ıplere sayfaya giriş izni verecek onun dışındak ıplere ise belirtmiş olduğum sayfaya yönlendirecek bir kod lazım?
toygar61
Üye
Üye
 
İleti: 34
Kayıt: 09.03.2006, 03:12

selam

İleti toygar61 17.10.2006, 14:35

Bilgisi Olan Arkadaşlar Bakabilirlerse Sevinirm?
toygar61
Üye
Üye
 
İleti: 34
Kayıt: 09.03.2006, 03:12

İleti fatihbaz 04.11.2006, 03:17

Hot link korumasını yapsam,başka sayfalardan direk başlıklara girenler anasayfaya mı yönelir?
Kullanıcı avatarı
fatihbaz
Üye
Üye
 
İleti: 870
Kayıt: 25.11.2005, 12:26
Konum: Kahramanmaraş

Cvp: linux tabanlı serverlarda .htaccess kullanımı

İleti pckedi 15.01.2007, 05:09

merhaba benim http://www.site.com/index.php?uye=5 şeklinde üyelere site açıyorum bu .htaccess
ile sub domainler şeklinde gösterebilirmiyim.telekkürler php bilgim htaccess eterli değildir.

.htaccess bu sorunuma çözüm olabilirmi :(
pckedi
Üye
Üye
 
İleti: 1
Kayıt: 15.01.2007, 05:02


Internet Teknolojileri



Kimler çevrimiçi

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir

cron