IIS によって提供される場合、Fontwesome は機能しません
-
21-12-2019 - |
質問
アプリを IIS7 サーバーに配置すると、FontAwesome が機能しません。
Firefox では、リクエストされた URL は次のようにエンコードされます。 http://l2etest.kema.intra/fonts/fontawesome-webfont.ttf%3Fv=4.0.3
そして404を取得します。私が変わるとき %3F
に ?
すべてがうまくいきます。
IE でも同じことが起こりますが、リクエストは eot font に送信されます。
これはCSSにあるものです(FontAwesomeページと同じです)。
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
問題は、IIS が URL をエンコードし、リクエストの代わりに ../fonts/fontawesome-webfont.eot?
リクエストは次の場所に送信されます ../fonts/fontawesome-webfont.eot%3F
.
「?」を削除することをお勧めしないでくださいまたはURLから「#」。それらは意図的に存在しており、不可欠なものです。問題は、IIS がそのように URL をエンコードしないようにするにはどうすればよいかということです。手がかりがあれば幸いです。
編集:ところで。上記の状況は、web.config で requestValidationMode と requestPathInvalidCharacters を設定したときに発生します。
<httpRuntime shutdownTimeout="360" maxRequestLength="102400" enable="true" requestValidationMode="2.0" requestPathInvalidCharacters="" />
これがないと 400 になります (不正なリクエスト)。潜在的に危険な Request.Path 値がクライアント (?) から検出されました。
フォントを適切に提供できるように IIS を修正するにはどうすればよいですか?
編集2: OK、問題の原因が見つかりました。MVC3 用の SquishIt バンドル ツールはこれらの文字を変更していました。バンドルから font-awesome.css を除外すると、すべてが正常に動作します。
解決 4
MVC3のSquishitバンドルツールはフォントパスをURLエンコードしているため、CSSファイルの../fonts/fontawesome-webfont.eot?
が../fonts/fontawesome-webfont.eot%3F
に変更されました。これは通常400を返します。%3fは危険ではないと考えられています。requestPathInvalidCharacters=""
を設定した場合、%3Fは安全であると見なされますが、明らかにファイル `` ../ fonts / fontawesome-webfont.eot%3f`、したがって404。
私はバンドルからfontawesome.cssを削除しました、そしてすべてがうまく機能します。
他のヒント
なぜ@ font-faceが投げているのかwoffファイルの404エラー?
web config :
にMIMEタイプを追加する <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>
. あなたはIISを開くことができます、あなたのウェブサイトを指すことができます、 iisセッションで、 mimeの種類を選択します。 MIMEタイプビュー表示後、 add - >をクリックします。 ダイアログ:
- ファイル名拡張子: .woff
- MIMEの種類:アプリケーション/ X-FONT-WOFF
OKをクリックします。
完了
この回答は、上記の問題ではないが同様の誤りに直面している人のために、そして異なる理由で、そしてこの糸に着陸しています。
私は同様の問題に直面していましたが、後でIISはFont-Awesome Woff、Folder MyIpAddress/fonts/fontawesome-webfont.woof
のEOTファイルを探していたが、さまざまなフォルダにファイルがありました。fontawesome-webfont.eot, fontawesome-webfont.svg,fontawesome-webfont.ttf, fontawesome-webfont.woff
をMy Fontsフォルダに移動すると、問題が解決しました問題
Bootstrap CDNリンクのみを追加するのは問題
あなたのページの場合:
<head>
...
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
...
</head>
. IISサーバで遊ぶことは、私が100%成功した別のトリックを試してみました。
ステップ1
ファイルの末尾に.jpgを追加してフォントファイル名の名前を変更します。
fontawesome-webfont.eot.jpg(同様)
fontawesome.cssフォントレンダリング行
のファイルの種類を変更します。 */@font-face{font-family:'FontAwesome'; src:url('../fonts/fontawesome-webfont.eot.jpg?v=4.0.3'); src:url('../fonts/fontawesome-webfont.eot.jpg?#iefix&v=4.0.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff.jpg?v=4.0.3') format('woff'),url('../fonts/fontawesome-webfont.ttf.jpg?v=4.0.3') format('truetype'),url('../fonts/fontawesome-webfont.svg.jpg?v=4.0.3#fontawesomeregular') format('svg');
. IIS7 で CodeIgniter を使用している場合:
web.config ファイルに以下を追加します すごい に パターン
<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>
それが役に立てば幸い !
woff2からwoffに変わり、それは罰金になった。
バンドリングでフォンタウソームを追加している場合は、WOFF2 URLを捨てることができます。CssRewriteUrlTransform
を使用してURLを書き直すために使用される似たスレッド上の次の解決策を参照してください。
https://stackoverflow.com/a/22700610/746984
index.htmlページでこのCDNを使用してください...
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
.