Apache-2.2

僅針對 Apache 中的 HTTPS 請求的身份驗證

  • November 21, 2013

我通過.htaccess文件為我的網站空間配置身份驗證(我無法控制該httpd.conf文件)。為了安全實施,我通過以下方式將 HTTP 自動重定向到 HTTPS

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]

對於身份驗證,我使用以下幾行

AuthType Basic
AuthName name
AuthUserFile ..path-to-htpasswd..
require valid-user

如果我通過 http 訪問資源,我必須輸入兩次使用者名和密碼(第一次獲取 307 重定向,第二次獲取實際文件)。有沒有辦法僅對 HTTPS 請求應用身份驗證?因此,HTTP 請求直接獲得重定向,因此我只需對自己進行一次身份驗證。

問候並感謝您的回答

您應該能夠利用在提供文件之前處理重寫的事實:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]

<FilesMatch ".">
   AuthType Basic
   AuthName name
   AuthUserFile ..path-to-htpasswd..
   require valid-user
</FilesMatch>

.是一個正則表達式萬用字元,因此 auth 仍然適用於所有有效請求,但僅在重寫發生之後

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