Apache HTTP Server Version 2.0

.htaccess files provide a way to make configuration
changes on a per-directory basis.
| İlgili Modüller |
İlgili direktifler |
|---|---|
.htaccess (ya da "dağıtık yapılandırma dosyaları") her dizin
için ayrı yapılandırma oluşturabilmemizi sağlar. Direktifler
içeren bir .htaccess dosyası bir dizine yerleştirildiğinde, o
direktifler yerleştirildiği dizine ve altdizinlere uygulanır.
.htaccess dosyanıza başka bir isim vermek isterseniz, AccessFileName direktifi içinde bu dosyanın adını belirtmelisiniz. Örneğin, bu dosyaya .config adını vermek isterseniz, sunucu yapılandırma dosyasına şu satırı eklemeniz gerekir:
AccessFileName .config
Genel olarak .htaccess dosyalarında ana yapılandırma dosyalarındaki
format kullanılır. Yine bu dosyalara koyabileceğiniz direktifler,AllowOverride
direktifiyle belirlenmektedir. Bu direktif, .htaccess dosyalarında
bulunan kategorilerden hangilerinin işleme konulacağını belirler.
.htaccess dosyalarında kullanabilecek direktifler hakkında
dokümanları incelemelisiniz. Direktiflerle ilgili
bölümde "Şartlar" kısmında o direktifin nerelerde
kullanılabileceği belirtilmiştir. Örneğin AddDefaultCharset
direktifini incelerseniz, "şartlar" kısmında .htaccess dosyalarında
kullanabileceğini göreceksiniz.
Eğer bir direktifin .htaccess dosyalarında kullanılıp kullanılamayacağından emin değilseniz, dokümanlar içinde o komutu buluo "Şartlar" satırında .htaccess olup olmadığına bakmalısınız.
.htaccess dosyaları, içerik sağlayıcı dizin başına
yapılandırma değişiklikleri yapmak zorunda olduğunda, ancak sunucunun
kökünde -root- erişim hakkına sahip olmadığında
kullanılmalıdır. Sunucu yöneticisi sık yapılandırma değişiklikleri
yapmak istemiyorsa, her kullanıcının kendi dizinleri üzerindeki
kontrollerini .htaccess dosyaları yoluyla düzenlemesine izin
vermek akıllıca olacaktır. Bu durum, özellikle tek bir makinada
birçok kullanıcıların sitelerinin tutulduğu ISP' ler için
geçerlidir.
Öte yandan, mümkünse .htaccess dosyalarının
kullanımından kaçınılmalıdır. Bir dizine .htaccess dosyası
yerleştirerek yapabileceğiniz değişiklikleri, sunucunun ana
yapılandırma dosyasında <Directory> kısmından da,
üstelik daha etkili bir biçimde yapabilirsiniz.
.htaccess dosyası kullanımından kaçınmamız için 2 ana
neden vardır:
Bunların ilki performanstır. AllowOverride ile .htaccess
dosyalarının kullanımına izin verdiğimizde, Apache her dizinde
.htaccess dosyası aramaya başlayacaktır. Kullansanız da,
kullanmasanızda bu performans kaybı yaratır. Ayrıca unutmayınki
sunucuya gelen her doküman isteme talebinde .htaccess dosyası o
dokümanla birlikte yüklenecektir.
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Burada, dosyalar mevcut olmasa dahi, dizindeki her dosyaya erişim
için yukarıda görüldüğü gibi 4 ayrı dizinde
.htaccess dosyası aranmaktadır.
İkinci neden güvenliktir. Kullanıcılara vermeniz gereken
izinlerin miktarı kritiktir: Eğer sunucu yapılandırmasını
değiştirmelerine izin verirseniz, değişiklikler
kontrolünüzden çıkabilir. Eğer yeteri kadar izin
vermezseniz teknik destek talepleri artacaktır. AllowOverride ' ın
dikkatlice kullanımı ve yeterli bir dokümantasyon sayesinde
birçok karmaşık durumun önüne geçilebilir.
/www/htdocs/example içindeki .htaccess
dosyası:
AddType text/example .exm
<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>
Ancak, bu işlemi .htaccess dosyası kullanmak yerine ana yapılandırma dosyasında yapmak sadece Apache başlarken performans kaybı yaratır; öte yandan .htaccess kullandığınızda her dosya talebinde ek bir yük oluşacaktır.
.htaccess dosyalarının kullanımı AllowOverride
directifi none ile kullanılarak engellenebilir:
AllowOverride None
Bir .htaccess dosyası içinde bulunan çeşitli yapılandırma direktifleri, o dosyanın bulunduğu dizine ve o dizinin altındaki dizinlere uygulanır. Ancak, gözden kaçırılmaması gereken önemli bir nokta, daha üst dizinlerde bulunan .htaccess dosyaları içindede çeşitli direktifler bulunabileceğidir. Direktifler bulundukları sıraya göre uygulanırlar. Bu sebeple, bir dizin içinde bulunan .htaccess dosyasındaki direktifler, daha üst dizinlerdeki .htaccess dosyalarının direktiflerini "ezer". Hatta silsile yolu ile ana sunucu yapılandırma dosyası ayarları bile geçersiz kılınabilir.
Örnek: /www/htdocs/example1 dizinindeki .htaccess
dosyasında şu satır bulunmaktadır:
Options +ExecCGI
(Not: "Options" direktifini .htaccess
dosyalarında kullanabilmek için "AllowOverride Options"
ifadesi kullanılmış olmalıdır.)
/www/htdocs/example1/example2 dizinindeki
.htaccess dosyasında şu satır bulunmakta:
Options Includes
/www/htdocs/example1/example2 dizininde bulunan 2.
.htaccess dosyasından ötürü, CGI çalıştırılmasına
izin verilmemiştir; çünkü Options Includes
ifadesiyle önceki ayarları etkisiz kılmıştır.
Eğer kimlik doğrulamasının nasıl yapıldığını bulmak için
dokümanın direk bu noktasına atladıysanız, birşeye dikkat
etmelisiniz: Parola korumalı kimlik doğrulaması oluşturmak için
.htaccess dosyaları gerektiği gibi yanlış bir genel kanı bulunmaktadır.
Bu yanlıştır. Sunucunun ana yapılandırma dosyasında <Directory>
bölümüne kimlik doğrulama direktifleri koymak tercih
edilmesi gereken yöntemdir; ancak bu dosyaya erişiminiz yoksa
.htaccess dosyalarını kullanmalısınız. (bknz."Ne zaman .htaccess
kullanmamalı)
Bu direktiflerin etkili olabilmesi için AllowOverride
authconfig direktifinin o dizin için uygulamada
olması gerekmektedir.
.htaccess dosyası içeriği:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
Please see the authentication tutorial for a more complete discussion of authentication and authorization.
Diğer bir yaygın .htaccess dosyası kullanımı; belli bir dizinde SSI' a izin vermek amaçlıdır. Bu, istenen dizindeki .htaccess dosyasına aşağıdaki yapılandırma direktiflerini yazarak yapılabilir:
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
Bu direktiflerin etkili olabilmesi için hem AllowOverride
Options, hem de AllowOverride
FileInfo direktiflerinin o dizin için uygulamada olması
gerekmektedir.
Please see the SSI tutorial for a more complete discussion of server-side includes.
Son olarak, .htaccess dosyalarını belli bir dizindeki CGI programlarının çalıştırılmasına izin vermek için kullanabilirsiniz. Şu yapılandırmayı uygulayın;
Options +ExecCGI
AddHandler cgi-script cgi pl
Eğer sözkonus dizindeki tüm dosyaların CGI programı gibi değerlendirilmesini istiyorsanız, aşağıdaki yapılandırmayı kullanın:
Options +ExecCGI
SetHandler cgi-script
Bu direktiflerin etkili olabilmesi için hem AllowOverride
Options, hem de AllowOverride
FileInfo direktiflerinin o dizin için uygulamada olması
gerekmektedir.
Please see the CGI tutorial for a more complete discussion of CGI programming and configuration.
.htaccess dosyalarında uyguladığınız yapılandırma direktifleri işe yaramıyorsa, bunun birçok nedeni olabilir:
En yaygın sorun, AllowOverride direktifinin
yapılandırma dosyalarınızdaki gerekli işlemlere izin verecek şekilde
ayarlanmamasından kaynaklanır. Özellikle AllowOverride None
ifadesini kullanmadığınızdan emin olun. .htaccess dosyası içine
hatalı ifadeler yazıp tekrar yüklemek iyi bir test
biçimidir. Eğer bir sunucu hatası almadıysanız, çok
yüksek ihtimal AllowOverride None direktifi bu dizin
için geçerlidir.