如何使用 .htaccess 和 .htpasswd 進行選擇性重定向和密碼
在我的
/var/www/
目錄中,我有許多目錄,例如:/var/www/impdata/ /var/www/data/
那麼我可以做到這一點:
當我去:
www.websitename.com/data/
它應該給出一個404
錯誤。當我這樣做時,
www.websitename.com/data/welcome.php
它應該可以工作。當我這樣做時,
www.websitename.com/impdata/
它應該詢問使用者名和密碼。當我這樣做時,
www.websitename.com/impdata/welcome.php
它應該可以工作。那麼我該如何編寫我的
.htaccess
並.htpasswd
實現這一目標呢?這是我目前的
.htaccess
文件,它在/var/www/
目錄中:Options -Indexes DirectoryIndex disabled <Directory /var/www/impdata> # All access controls and authentication are disabled Satisfy Any Allow from all </Directory>
我目前
.htpasswd
目錄中的/var/www/impdata/
文件:try:XYZXYZXYZXYZ
首先,.htaccess 文件旨在在它們所在的目錄中生效,因此通常不是在 /var/www/ 中有一個,而是在 /var/www/impdata/ 和 /var 中各有一個/www/數據/
或者更確切地說根本沒有 .htaccess 文件:我的小毛病,引自.htaccess文件手冊:
如果您有權訪問 httpd 主伺服器配置文件,則應**完全避免使用 .htaccess文件。**使用 .htaccess 文件會降低 Apache http 伺服器的速度。您可以包含在 .htaccess 文件中的任何指令都最好設置在 Directory 塊中,因為它具有相同的效果並具有更好的性能。
如果我正確閱讀了您的問題,則在使用 www.example.com/data/ 時,您不想看到 index.html 或類似文件(如果存在)並且您也不想看到文件列表,但是在請求時該目錄中的特定文件,您希望允許使用者訪問該文件。
<Directory /var/www/data> Options -Indexes DirectoryIndex disabled </Directory>
使用其他相同的選項向 /var/www/impdata 添加身份驗證:
<Directory /var/www/impdata> Options -Indexes DirectoryIndex disabled AuthType Basic AuthName "RESTRICTED AREA" AuthUserFile /var/www/impdata/.htpasswd Require valid-user </Directory>
您可以禁用該密碼保護區域中的某些文件或目錄,使其無需使用
Satisfy Any
指令進行身份驗證:<File /var/www/impdata/welcome.php> # All access controls and authentication are disabled Satisfy Any Allow from all </File>