当我将我的应用程序放在IIS7服务器上时,FontAwesome不适用于我。

在Firefox中,请求的URL被编码为 http://l2etest.kema.intra/fonts/fontawesome-webfont.ttf%3Fv=4.0.3 我得到了404。当我改变 %3F? 一切正常。

同样的事情发生在IE中,但请求转到eot字体。

这是我在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时。配置我设置requestValidationMode和requestPathInvalidCharacters:

<httpRuntime shutdownTimeout="360" maxRequestLength="102400" enable="true" requestValidationMode="2.0" requestPathInvalidCharacters="" />

没有它,我得到400(糟糕的要求):有潜在危险的请求。从客户端检测到路径值(?)

如何修复IIS以正确提供字体?

编辑2: 好吧,我找到了问题的原因。Mvc3的SquishIt捆绑工具正在改变这些字符。当我排除字体-真棒。css从捆绑一切工作正常。

有帮助吗?

解决方案 4

Mvc3的SquishIt捆绑工具是对字体路径进行url编码,因此 ../fonts/fontawesome-webfont.eot? 在css文件被更改为 ../fonts/fontawesome-webfont.eot%3F.这通常返回400,因为%3F被认为是不安全的。如果你设置 requestPathInvalidCharacters="" 然后%3f被认为是安全的,但显然没有文件"。./字体/fontawesome-webfont。eot%3F`,因此404.

我删除了fontawesome。css从包和一切工作正常。

其他提示

为什么@font-face在woff文件上抛出404错误?

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>

你可以打开IIS,指向你的网站,在 IIS会话, ,选择 MIME类型.Mime类型视图显示后,单击 添加 -> 在对话框中:

  • 文件扩展名: .沃夫
  • MiME类型: 应用程序/x-字体-woff

单击确定。

完成了。

这个答案不是针对上述问题的 但对于那些谁面临类似的错误,但由于不同的原因和土地进入这个线程。

我遇到了类似的问题,但后来发现IIS试图在文件夹中查找font-awesome woff,eot文件 MyIpAddress/fonts/fontawesome-webfont.woof 但我有不同的文件夹中的文件。移动 fontawesome-webfont.eot, fontawesome-webfont.svg,fontawesome-webfont.ttf, fontawesome-webfont.woff 进入我的字体文件夹解决了我的问题

对我来说,只添加引导CDN链接就解决了这个问题

浏览你的网页:

<head>
...
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
...
</head>

玩IIS服务器是有风险的,而不是我尝试了另一个100%成功的技巧。

步骤一

通过添加重命名字体文件名称。文件末尾的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 :

在你的网上。配置文件,添加 沃夫模式

<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,它进行得很好。

如果您通过捆绑添加FontAwesome,它可能会抛出woff2url。在类似的线程上看到以下解决方案 CssRewriteUrlTransform 用于返工url:https://stackoverflow.com/a/22700610/746984

在您的索引中使用此cdn。html页面。..

 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top