# Loại trừ thư mục phương tiện khỏi xác thực cơ bản
Phương tiện SetEnvIf Request_URI "^/media/*"
Lệnh cho phép, từ chối
Yêu cầu người dùng hợp lệ
Cho phép từ env=media
Từ chối từ env=!media
đáp ứng bất kỳ
Điều này sẽ có hiệu quả, ngoại trừ regex sai trong ĐặtEnvIf
chỉ thị, vì vậy env var phương tiện truyền thông
không được đặt khi yêu cầu /media/someimage.jpg
. Bạn đang thiếu một dấu chấm trước *
định lượng, tức là. ^/media/.*
. Tuy nhiên, bạn chỉ có thể xóa dấu *
hoàn toàn, tức là ^/phương tiện/
, có hiệu quả giống nhau (và hiệu quả hơn).
Các Từ chối từ env=!media
chỉ thị là thừa.
Vì vậy, những điều sau đây sẽ hoạt động:
# Loại trừ thư mục phương tiện khỏi xác thực cơ bản
Phương tiện SetEnvIf Request_URI "^/media/"
Yêu cầu người dùng hợp lệ
Lệnh cho phép, từ chối
Cho phép từ env=media
đáp ứng bất kỳ
TUY NHIÊN, điều này đang sử dụng các chỉ thị Apache 2.2 không dùng nữa. Trên Apache 2.4, thay vào đó, bạn có thể thực hiện các thao tác sau:
# Loại trừ thư mục phương tiện khỏi xác thực cơ bản
Phương tiện SetEnvIf Request_URI "^/media/"
Yêu cầu người dùng hợp lệ
Yêu cầu phương tiện truyền thông env
Các mặc định thùng chứa là <RequireAny>
- vì vậy bạn không cần phải bao gồm điều này. Mặc dù bạn có thể rõ ràng nếu bạn muốn:
<RequireAny>
Require valid-user
Require env media
</RequireAny>
Ngoài ra, bạn có thể bao quanh toàn bộ khối ủy quyền trong một <If>
sự biểu lộ. Ví dụ:
# Mật khẩu bảo vệ mọi thứ trừ thư mục con "/media/"
<Nếu "%{REQUEST_URI} !~ m#^/media/#">
AuthType cơ bản
AuthName "Được bảo vệ"
AuthUserFile "/var/www/company/.htpasswd"
Yêu cầu người dùng hợp lệ
</Nếu>
người điều hành !~
là một đối sánh biểu thức chính quy phủ định.