2010-10-25 25 views
387

Tôi đang sử dụng @font-face trên trang web của công ty tôi và nó hoạt động/trông tuyệt vời. Ngoại trừ Firefox và Chrome sẽ phát ra lỗi 404 trên tệp .woff. IE không ném lỗi. Tôi có các phông chữ nằm ở gốc nhưng tôi đã thử với các phông chữ trong thư mục css và thậm chí cho toàn bộ url cho phông chữ. Nếu loại bỏ những phông chữ từ tập tin css của tôi, tôi không nhận được một 404 vì vậy tôi biết nó không phải là một lỗi cú pháp.Tại sao @ font-face ném lỗi 404 lên các tệp woff?

Ngoài ra, tôi sử dụng fontsquirrels công cụ để tạo ra các @font-face phông chữ và mã:

@font-face { 
    font-family: 'LaurenCBrownRegular'; 
    src: url('/laurencb-webfont.eot'); 
    src: local('☺'), 
    url('/laurencb-webfont.woff') format('woff'), 
    url('/laurencb-webfont.ttf') format('truetype'), 
    url('/laurencb-webfont.svg#webfontaaFhOfws') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

@font-face { 
    font-family: 'FontinSansRegular'; 
    src: url('/fontin_sans_r_45b-webfont.eot'); 
    src: local('☺'), 
    url('/fontin_sans_r_45b-webfont.woff') format('woff'), 
    url('/fontin_sans_r_45b-webfont.ttf') format('truetype'), 
    url('/fontin_sans_r_45b-webfont.svg#webfontKJHTwWCi') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 
+0

bạn có phiên bản nào cho firefox và chrome? Gecko 1.9.2 (Firefox 3.6) thêm hỗ trợ cho WOFF. – Sotiris

+0

FF 3.6 và Chrome 8 dev – dcp3450

+0

Thử chuyển đổi thành OTF thành Woff một lần nữa. Tôi đã có một vấn đề tương tự và phân tích tệp bị hỏng. Đây là một trang web tốt để chuyển đổi thành các loại phông chữ khác nhau. https://onlinefontconverter.com/ – user5313842

Trả lời

683

tôi đã trải qua triệu chứng này tương tự - 404 trên các tệp woff trong Chrome - và đang chạy một ứng dụng trên Windows Server với IIS 6.

Nếu bạn ở trong cùng một tình huống bạn có thể sửa chữa nó bằng cách làm như sau:

Giải pháp 1

"Chỉ cần thêm khai báo kiểu MIME sau qua IIS Manager (HTTP Headers tab của thuộc tính trang web): ứng dụng .woff/x-WOFF "

cập nhật: theo MIME Types for woff fontsGrsmto kiểu MIME thực tế là application/x-font-WOFF (dành cho Chrome ít nhất). x-woff sẽ sửa lỗi Chrome 404, x-font-woff sẽ khắc phục các cảnh báo của Chrome.

IIS 6 MIME Types

Nhờ Seb Duggan: http://sebduggan.com/posts/serving-web-fonts-from-iis

Giải pháp 2

Bạn cũng có thể thêm các loại MIME trong cấu hình web:

<system.webServer> 
    <staticContent> 
     <remove fileExtension=".woff" /> <!-- In case IIS already has this mime type --> 
     <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> 
    </staticContent>  
    </system.webServer> 
+0

Vâng, điều này hoạt động. Tôi luôn quên cập nhật máy chủ sản xuất của mình với loại mime darn. Vấn đề không xuất hiện trong IE thông thường vì nó sẽ tải một tệp .eot trước tiên, nếu có. Trong Firefox, tôi nhận được 404 nếu loại mime này không có sẵn cho .woff. – Corgalore

+1

Điều này cũng làm việc với Apache cho firefox – Ryan

+0

Tương tự cũng xảy ra với IIS7. Cảm ơn bạn đã giải pháp và +1 để bao gồm cả phiên bản tệp cấu hình. Chúc mừng! – longda

1

Giải quyết nó:

tôi đã phải sử dụng Mo'Bulletproofer method

+0

Điều đó có nghĩa là bạn không sử dụng WOFF nữa? Có thể máy chủ web của bạn không được định cấu hình đúng cách để phân phối các tệp WOFF không? Ví dụ. xem này: http://stackoverflow.com/questions/3594823/mime-type-for-woff-fonts/3627228#3627228 – mercator

+0

không có woff được mã hóa với base64 – dcp3450

+0

Tôi đã thử nghiệm phông chữ bằng cách mã hóa với các máy khác. Hiển thị tốt và không có lỗi 404. – dcp3450

1

Điều này có thể rõ ràng , nhưng nó đã lừa tôi với 404s một số lần ... Hãy chắc chắn rằng các phông chữ f các quyền cũ hơn được đặt chính xác.

44

Thực ra câu trả lời @Ian Robinson hoạt động tốt nhưng Chrome sẽ tiếp tục phàn nàn với thông điệp rằng: "Resource hiểu là Font nhưng chuyển với kiểu MIME application/x-WOFF"

Nếu bạn nhận được điều đó, bạn có thể thay đổi từ

application/x-WOFF

để

application/x -font -woff

và bạn sẽ không có bất kỳ giao diện điều khiển lỗi Chrome nữa!

(thử nghiệm trên Chrome 17)

+0

Bạn thay đổi điều này ở đâu? Trong trình duyệt hoặc trên máy chủ? –

+0

Như được giải thích trong câu trả lời ở trên, nó phải là o máy chủ. Giải pháp này là dành cho Windows Server với IIS 6. – Grsmto

+1

chrome vẫn phàn nàn với tôi với x-font-woff –

1

Đồng thời kiểm tra trình ghi đè URL của bạn. Nó có thể ném 404 nếu một cái gì đó "lạ" đã được tìm thấy.

13

Giải pháp cho IIS7

Tôi cũng đã xem qua cùng một vấn đề. Tôi nghĩ rằng việc thực hiện cấu hình này từ cấp độ máy chủ sẽ tốt hơn vì nó áp dụng cho tất cả các trang web.

  1. Đến IIS nút gốc và nhấp đúp vào liên kết "Các loại MIME" tùy chọn cấu hình

  2. Bấm "Add" trong các action panel phía trên bên phải.

  3. Thao tác này sẽ hiển thị hộp thoại. Thêm phần mở rộng tệp .off và chỉ định "application/x-font-woff" làm loại MIME tương ứng.

Thêm MIME cho .woff tên file mở rộng

Go to MIME Types

Add MIME Type

Dưới đây là những gì tôi đã làm để giải quyết vấn đề trong IIS 7

+2

Lưu ý rằng [câu trả lời chỉ có liên kết được khuyến khích] (http://meta.stackoverflow.com/tags/link-only -answers/info), SO câu trả lời nên là điểm cuối của một tìm kiếm cho một giải pháp (so với một điểm dừng khác của tài liệu tham khảo, có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

+0

@kleopatra - Cập nhật câu trả lời với chi tiết và xóa liên kết. – Dhanuka777

+0

"Tôi nghĩ rằng việc thực hiện cấu hình này từ cấp độ máy chủ sẽ tốt hơn vì nó áp dụng cho tất cả các trang web." - tốt, điều đó thực sự phụ thuộc. Nếu bạn đang giao dịch với một máy chủ công ty, có thể chạy một số ứng dụng nội bộ, vâng, bạn đã đúng. Mặt khác, nếu bạn chạy một trang web công khai, được phân phối trên một số máy chủ, phương thức web.config thắng theo "tính nhất quán" (nghĩa là nó sẽ ở đó, bạn không thể quên định cấu hình nó trên một máy chủ) máy chủ). –

8

Chạy IIS Server Manager (chạy lệnh: inetmgr) Mở Mime Các loại và thêm sau

Tên tập tin mở rộng: .woff

MIME loại: application/octet-stream

1

Tôi đã thử một tấn những thứ xung quanh quyền, kiểu MIME, vv, nhưng đối với tôi cuối cùng là web.config đã gỡ bỏ trình xử lý tệp tĩnh trong IIS và sau đó thêm nó một cách rõ ràng vào các thư mục có các tệp tĩnh. Ngay sau khi tôi thêm một nút vị trí cho thư mục của tôi và thêm trình xử lý trở lại, các yêu cầu ngừng nhận được 404.

0

Nếu bạn không có quyền truy cập vào cấu hình máy chủ web của mình, bạn cũng có thể chỉ RENAME tệp phông chữ để kết thúc bằng svg (nhưng giữ lại định dạng). Hoạt động tốt cho tôi trong Chrome và Firefox.

0

Nếu bạn đang sử dụng CodeIgniter dưới IIS7:

Trong file web.config của bạn, thêm WOFF để mô hình

<rule name="Rewrite CI Index"> <match url=".*" /> <conditions> <add input="{REQUEST_FILENAME}" pattern="css|js|jpg|jpeg|png|gif|ico|htm|html|woff" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:0}" /> </rule>

Hy vọng nó sẽ giúp!

-1

IIS Mime Type:.woff font/x-woff (không phải ứng dụng/x-woff, hoặc application/x-font-woff)

+1

Bạn có thể vui lòng mở rộng câu trả lời của mình và cung cấp chi tiết về cách giải quyết vấn đề. – talex

40

Câu trả lời cho bài đăng này rất hữu ích và tiết kiệm thời gian rất lớn. Tuy nhiên, tôi thấy rằng khi sử dụng FontAwesome 4.50, tôi phải thêm cấu hình bổ sung cho loại tiện ích mở rộng woff2 cũng như được hiển thị bên dưới các yêu cầu khác cho loại woff2 đã đưa ra lỗi 404 trong Công cụ dành cho nhà phát triển của Chrome trong Bảng điều khiển> Lỗi.

Theo nhận xét của S.Serp, cấu hình bên dưới phải được đặt trong thẻ <system.webServer>.

<staticContent> 
    <remove fileExtension=".woff" /> 
    <!-- In case IIS already has this mime type --> 
    <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> 
    <remove fileExtension=".woff2" /> 
    <!-- In case IIS already has this mime type --> 
    <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff2" /> 
</staticContent> 
+3

và thẻ được đề cập của bạn '' phải nằm trong thẻ '' –

+0

@ S.Serp. Cảm ơn vì điểm quan trọng. – Sunil

+0

hoạt động hoàn toàn tốt, báo cáo từ Windows Server 2012 r2, ASP.Net MVC5. – Cromwell

7

Ngoài câu trả lời của Ian, tôi phải cho phép tiện ích mở rộng phông chữ trong mô-đun lọc yêu cầu làm cho nó hoạt động.

<system.webServer> 
    <staticContent> 
    <remove fileExtension=".woff" /> 
    <remove fileExtension=".woff2" /> 
    <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" /> 
    <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff" /> 
    </staticContent> 
    <security> 
     <requestFiltering> 
      <fileExtensions> 
       <add fileExtension=".woff" allowed="true" /> 
       <add fileExtension=".ttf" allowed="true" /> 
       <add fileExtension=".woff2" allowed="true" /> 
      </fileExtensions> 
     </requestFiltering> 
    </security>  
</system.webServer> 
0

Nếu vẫn không hoạt động sau khi thêm loại MIME, vui lòng kiểm tra xem "Xác thực ẩn danh" có được bật trong phần Xác thực trên trang web hay không và chọn "Nhận dạng hồ bơi ứng dụng" theo ảnh chụp màn hình đã cho.

enter image description here

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