- Konu sahibi
- #1
.htaccess içinde Options yönergesi ne işe yarar?
Options yönergesi, Apache’nin bir dizinde hangi web sunucusu özelliklerini kullanacağını belirler. Örneğin dizin listelemeyi açıp kapatabilir, CGI betiklerini çalıştırabilir veya içerik pazarlığını etkinleştirebilirsiniz. Ancak yönergenin .htaccess içinde çalışması için sunucu yapılandırmasında ilgili dizin için AllowOverride Options veya yönergeyi açıkça yetkilendiren AllowOverrideList politikası bulunmalıdır. İzin verilen seçenekler ayrıca daraltılabilir.En temel kullanım şöyledir:
Kod:
Options -Indexes
Bu satır, o dizinde varsayılan giriş dosyası bulunmadığında dosya listesinin gösterilmesini engeller. Ziyaretçi artık klasör içeriğini liste olarak göremez; uygun bir giriş dosyası veya hata belgesi sunulması gerekir.
Sözdizimi ve seçeneklerin anlamı
Options iki farklı biçimde kullanılabilir. Seçenekleri doğrudan yazarsanız mevcut seçenek kümesini tamamen değiştirirsiniz. Başına + veya - koyarsanız yalnızca belirtilen seçeneği açar veya kapatırsınız.Pratikte .htaccess içinde en güvenli yaklaşım, yalnız değiştirmek istediğiniz seçeneği göreli sözdizimiyle belirtmektir. Örneğin sunucu yöneticisinin verdiği başka seçenekleri yanlışlıkla kapatmamak için
Options -Indexes kullanın. Options Indexes gibi mutlak kullanım ise miras alınan seçeneklerin tamamını değiştirir; bu nedenle beklenmeyen davranışlara yol açabilir.Sık kullanılan seçenekler şunlardır:
Indexes dizin listesini, FollowSymLinks sembolik bağlantı takibini, SymLinksIfOwnerMatch yalnızca sahip eşleşirse sembolik bağlantı takibini, ExecCGI CGI çalıştırmayı, Includes ise Server Side Includes özelliğini kontrol eder. Bunlar tek başına ilgili yazılım bileşenini kurmaz: CGI için uygun handler/modül, SSI için mod_include ve ilgili içerik yapılandırması gerekir. Her seçenek her sunucuda izinli olmayabilir.Çalıştırılabilir en küçük örnek
Bu kurgusal örneğin amacı dizin listelemeyi kapatmaktır. Önce web kökü dışında geri dönüş kopyası alın ve uygulamanın mevcut kurallarını koruyun; örnek URL’yi kendi test dizininize uyarlayın.
- Site dosyalarının bulunduğu kök dizindeki mevcut
.htaccessdosyasını açın. Dosya yoksa adı tam olarak.htaccessolan düz metin dosyası oluşturun. - Dosyaya yalnızca şu satırı ekleyin:
Kod:Options -Indexes - Dosyayı kaydedin ve giriş dosyası olmayan bir alt klasörü tarayıcıda açın. Örneğin
https://example.com/assets/adresindeindex.htmlveyaindex.phpbulunmuyorsa Apache artık klasör içeriğini listelememelidir. - Değişikliğin sonucunu Apache hata günlüğü ve HTTP yanıtıyla kontrol edin. Liste yerine genellikle
403 Forbiddengörülür; tek bir 403 yanıtı ne dosya izni arızasını ne de bu yönergenin çalıştığını tek başına kanıtlar. Önceki davranış, giriş dosyası, erişim kuralları ve günlük aynı anda değerlendirilmelidir.
| Kullanım | Anlamı | Tipik sonuç |
|---|---|---|
Options Indexes | Seçenek kümesini Indexes ile sınırlar | Giriş dosyası yoksa dosya listesi gösterilebilir |
Options +Indexes | Mevcut seçeneklere Indexes ekler | Üst yapılandırmadaki seçenekler korunur |
Options -Indexes | Dizin listelemeyi kapatır | Klasör içeriği listelenmez |
Options None | Dizin seçeneklerini kapatır | Özel dizin özellikleri devre dışı kalır |
Çalışmazsa nasıl yorumlanır?
Options not allowed here veya benzeri bir 500 Internal Server Error alırsanız, ilgili dizin için AllowOverride Options etkin değildir ya da barındırma sağlayıcısı bu yönergeyi kısıtlamıştır. Bu durumda satırı tekrar tekrar değiştirmek yerine sunucu yöneticisinden ilgili dizinde AllowOverride Options veya daha dar bir AllowOverrideList izni istemelisiniz.Indexes seçeneğini yazdığınız hâlde liste oluşmuyorsa, sunucu yapılandırmasında DirectoryIndex ile tanımlı bir giriş dosyası olabilir. Dizin listeleme yalnızca Apache’nin sunacağı uygun bir giriş dosyası bulunmadığında devreye girer.Sık yapılan hatalar
- Mutlak
Optionskullanımının üst dizinden gelen tüm seçenekleri koruduğunu sanmak.Options Indexes, diğer miras alınan seçenekleri kapatabilir. - Her hosting ortamında
FollowSymLinksveyaExecCGIkullanılabileceğini varsaymak. Bu seçenekler sunucu politikası ve modül yapılandırmasına bağlıdır. - Dizin listelemeyi kapatmanın dosyaya doğrudan erişimi engellediğini düşünmek.
-Indexesyalnızca otomatik klasör listesini kapatır; bilinen bir dosya adı doğrudan istenebilir. - Yeni bir
.htaccessdosyası eklemeden önce üst dizinlerdeki dosyaları kontrol etmemek. Alt dizindeki ayarlar üst yapılandırmayı değiştirebilir veya onunla birleşebilir.
Sık sorulan sorular
Options ile mod_rewrite aynı şey midir?
Hayır.Options dizin özelliklerini yönetir; URL yönlendirme ve yeniden yazma işlemleri için genellikle mod_rewrite yönergeleri kullanılır. Birbirlerinden bağımsız izin sınıflarına sahip olabilirler.Options yönergesi sunucu yapılandırmasına mı, .htaccess dosyasına mı yazılmalı?
Sunucu yönetimine erişiminiz varsa ilgiliDirectory bloğuna yazmak genellikle daha verimlidir. Yalnızca site dizinine erişiminiz varsa ve hosting izin veriyorsa aynı ayarı .htaccess içinde kullanabilirsiniz.Aynı satırda artılı ve işaretsiz seçenek kullanabilir miyim?
Hayır.
Options +Indexes FollowSymLinks gibi göreli ve mutlak sözdizimini karıştırmak geçerli değildir. Mevcut kümeye ekleme/çıkarma yapıyorsanız bütün seçeneklerde uygun artı veya eksi kullanın; tam kümeyi belirliyorsanız işaretsiz yazın. Yalnız gerekli özelliği değiştirin.