2010-10-20 42 views
14

Tôi đã có này quy tắc này trong tập tin htaccess của tôi để buộc các file liên quan đến tải chứ không phải là mở trong trình duyệt:Đặt tiêu đề Nội dung-Xử lý để chỉ đính kèm trên các tệp trong một thư mục nhất định?

<FilesMatch "\.(gif|jpe?g|png)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

Có cách nào để thay đổi RegExp vì vậy nó chỉ áp dụng cho tập tin trong một số danh mục?

Cảm ơn

+4

Tại sao bạn sử dụng 'application/octet-stream'? Điều này chỉ đơn giản là nói với trình duyệt bạn không biết loại tệp là gì. Và điều đó không đúng. Để bắt buộc tải xuống, 'Nội dung-Bố trí: tệp đính kèm' là tất cả những gì bạn cần. – TRiG

+0

Điều này không hoàn toàn đúng. Internet Explorer sẽ không luôn tôn trọng Nội dung-Bố trí. Để buộc IE cung cấp lời nhắc tải xuống, cách tốt nhất là sử dụng ứng dụng/octet-sream. – aaronbauman

Trả lời

12

Có thể bạn sẽ cần đặt các chỉ thị trong tệp .htaccess trong thư mục cụ thể.

+5

A ha! Vâng! Đây phải là giải pháp, làm chết tiệt tâm trí không linh hoạt của tôi! – DonutReply

2

Đặt nó trong một chỉ thị <Location>, và/hoặc sửa đổi các regex để loại trừ dấu gạch chéo hoặc cho phù hợp.

+0

Vị trí dường như không hoạt động trong các tệp htaccess, có cách nào khác không? – DonutReply

9

Giống như @gumbo cho biết, hãy đặt tệp .htaccess vào thư mục cấp cao nhất mà bạn muốn ảnh hưởng. và các cài đặt đó sẽ giảm xuống các thư mục con. Bạn cũng có thể muốn đảm bảo rằng mô-đun headers được bật trước khi sử dụng trong tệp htaccess của bạn. Dòng sau sẽ tạo ra một lỗi nếu các mô-đun tiêu đề không được kích hoạt:

Header set Content-Disposition attachment 

đây là một ví dụ rằng các lực lượng tải về các tập tin mp3 chỉ khi các mô-đun tiêu đề được kích hoạt:

<IfModule mod_headers.c> 
    <FilesMatch "\.(mp3|MP3)$"> 
     ForceType audio/mpeg 
     Header set Content-Disposition "attachment" 
     Allow from all 
    </FilesMatch> 
</IfModule> 

Lưu ý: nó không kích hoạt mô-đun, nó chỉ bỏ qua bất cứ điều gì bên trong các thẻ IfModule nếu mô-đun không được kích hoạt.

Để bật mô-đun apache, bạn cần phải chỉnh sửa tệp httpd.conf hoặc trong máy chủ wamp, bạn có thể nhấp vào biểu tượng khay wamp và chọn "Apache -> Mô-đun Apache -> headers_module" hoặc đảm bảo nó được chọn.

+0

điều gì sẽ thay đổi cho apache tomcat v8.0? – dearvivekkumar

Các vấn đề liên quan