Tôi đang cố gắng viết "cuối cùng" chống nóng .htaccess ...
Bạn có thể tìm thấy nhiều ví dụ / hướng dẫn / trình tạo trên mạng nhưng nhiều trong số đó là sai hoặc không đầy đủ (hoặc thậm chí cả hai).
Đây là những tính năng tôi đang tìm kiếm:
- Phải chặn liên kết nóng cho danh sách các phần mở rộng tệp khi HTTP_REFERER là trang web nước ngoài.
- Phải cho phép liên kết nóng cho tên miền hiện tại (duh) mà không mã hóa nó trong .htaccess.
- Đối với tên miền hiện tại, nó phải hoạt động theo http và https.
- Đối với tên miền hiện tại, nó phải hoạt động với www và không có www.
- Phải có thể thêm các tên miền ngoại lệ vào các quy tắc này (như bạn bè của chúng tôi Google) và các tên miền này phải hoạt động theo http và https và với www hoặc không có www.
Đây là những gì tôi đã đạt được cho đến nay:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com/.*$ [NC]
RewriteRule \.(gif|jpe?g|png|zipx?)$ - [NC,F]
</IfModule>
Những câu hỏi của tôi:
- Làm thế nào để tránh mã hóa cứng
mydomain.com
trong .htaccess? (Thật tuyệt vời khi có thể triển khai .htaccess này cho tất cả các tên miền của tôi mà không phải sửa đổi nó cho từng tên miền.) - Trong RewriteRule của tôi,
gif|jpe?g|png|zipx?
tương đương vớigif|jpg|jpeg|png|zip|zipx
phải không? (Xin lỗi vẫn còn mới ở các biểu thức thông thường.) - Bạn có thấy điều gì xấu trong .htaccess của tôi mà tôi không biết không?
Đối với # 1 tôi biết điều đó là có thể. Đoạn mã gần nhất tôi tìm thấy là đoạn mã này loại bỏ www khỏi URL mà không cần mã hóa tên miền. Có cách nào để sử dụng phương pháp này cho câu hỏi số 1 của tôi không?
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
Cập nhật:
Tôi biết các giải pháp sẽ phục vụ hình ảnh thủy ấn thay vì hình ảnh thông thường. Nhưng tôi không tìm kiếm loại giải pháp này. Tôi muốn một giải pháp phổ quát (phục vụ 403 lỗi) sẽ hoạt động cho tất cả các loại tệp nhị phân (zip, exe, iso, jpg, png, gif ...).