FONTAWESOME在IIS服务时不起作用
-
21-12-2019 - |
题
当我将我的应用程序放在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从包和一切工作正常。
其他提示
在 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">