Bir alt dizinden .htaccess parola koruması nasıl kaldırılır


98

Web sitemin tamamını kullanarak parola korumalıyım, .htaccessancak alt dizinlerden birini parola olmadan görüntülenebilmesi için açığa çıkarmak istiyorum.

Bir alt dizin için htaccess şifre korumasını nasıl devre dışı bırakabilirim? Özellikle .htaccesssözdizimi nedir?

İşte .htaccessftp'min köküne yerleştirilen dosyam.

AuthName "Site Administratrion"
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName güvenli
AuthType Basic
kullanıcı kullanıcı adı gerektir 1
izin ver, reddet
hepsinden izin ver

4
Bu, sunucu hatası için daha uygun olabilir.
09:58

Yanıtlar:


154

Apache 2.3'e kadar .htaccess, gerekli dizinde yeni bir dosya oluşturmanız ve Satisfy anyyönergeyi bu şekilde eklemeniz gerekir :

# allows any user to see this directory
Satisfy Any

Sözdizimi Apache 2.4'te değişti, bu aynı etkiye sahip:

Require all granted

7
Ben sadece çalışmak için bu alabilir Allow from alldeğil Satisfy Any.
Jess Telford

@JessTelford, kod parçacığını iyi kullanıyor. Benim için işe yarayan cevap için @RageZ +1. Cevabı çok basit olacak şekilde düzenleyebilir ve kod parçacığı yöntemini kullanarak gönderebilir misiniz? Aksi takdirde birinin düşünmesi gerekecekthanks
Jesse Burcsik

2
@JessTelford Satisfy Anyçalışıyor ve olarak yanlış yazılmıştı Satisify Any. Sizin için işe yaramamasının nedeni bu olabilir.
BlueBird

1
Korumasız tek bir dosyaya ihtiyacım vardı (diğer her şey korunuyor), <Files> bölümünde aynı yapıldı
Nick

Bu benim için çalışmıyor - hala kullanıcı adı ve pwd isteyen bir şifre kalıbı alıyorum .. firefox ve Windows 7 kullanımı ... Herhangi bir fikriniz var mı?
ItsMeDom

36

RageZ'nin cevabına ek olarak, bunu Sunucu Yönergelerinde kullandım:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

Harika. Teşekkürler RageZ!


9

.htaccessBu direktifle istenen alt dizinde yeni bir tane oluşturmanız yeterlidir :

Allow from all

IP'nizi yalnızca aşağıdakilerle kısıtlayabilirsiniz:

Allow from x.x.x.x

Bakınız: http://httpd.apache.org/docs/current/mod/mod_access_compat.html


"Tümünden izin ver" ve "Herhangi birini tatmin et" yerine "Tüm veriyi zorunlu kıl" koyduğumda işe yaradı. Bu ikisi benim için işe yaramadı. Apache 2.4'teyim.
endo64

1

Doğrulamayı geçersiz kılan alt dizine başka bir .htaccess dosyası eklemeniz gerekir. .htaccess yukarı doğru basamaklanır, yani mevcut klasöre bakar, sonra bir seviye yukarı çıkar ve bu böyle devam eder.


4
sözdizimini biliyor musun? Konsepti anlıyorum ama nasıl uygulayacağımı bilmiyorum.
justinl

Mevcut olanı kaldırmak ve herhangi bir izin kullanmak istemiyorsanız, onu .htaccess adında boş bir dosya ile değiştirin
12'de

3
@Garry, .htaccess basamaklandırması böyle çalışmaz, seçenekleri açıkça geçersiz kılmanız gerekir.
William Denniss

1

Bir sitedeki ana .htaccess dosyasından temel kimlik doğrulaması yoluyla "foo" alt dizinine izin vermenin bir yolu:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

Not: Bu, Apache 2.4'te çalışır. Daha önceki sürümler için onaylamadım.


0

Herhangi bir dizini htaccess kimlik doğrulamasından korumak istiyorsanız, üstte htaccess dosyanızda aşağıdaki kodu kullanabilirsiniz.

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

Ayrıca, birden fazla dizini önlemek istiyorsanız,

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

ne kadar çok dizin varsa, htaccess engellemesinden kaldırmak istiyorsunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.