Linux

如何使用 .htaccess 和 .htpasswd 進行選擇性重定向和密碼

  • December 15, 2015

在我的/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>

引用自:https://serverfault.com/questions/646015