@ font-face在访问" www.domain.tld"时无法正常工作但正在使用" domain.tld"

时间:2014-08-12 18:00:18

标签: html css django apache

问题

如果我通过www.domain.tld访问我的网站,则省略@font-face规则。 如果我转到domain.tld(没有' www'部分)@font-face被视为。 所有其他css格式都适用于两种情况。

CSS

@font-face {
    font-family: 'font-name';
    src: url(../fonts/font-name.eot);
    src: local("font-name"), url(../fonts/font-name.ttf) format("truetype");
}

Django的

在我的Django settings.py中:

STATIC_ROOT = '/var/www/domain.tld/static/'
STATIC_URL = 'http://domain.tld/static/'

如果我将其更改为STATIC_URL = 'http://www.domain.tld/static/'@font-face上的domain.tld规则将被忽略,并在www.domain.tld上被视为反向行为。

的Apache

<VirtualHost *:80>
    CustomLog /var/log/apache2/domain.tld.log combined

    ServerName domain.tld
    ServerAlias www.domain.tld

    WSGIScriptAlias / /var/www/domain.tld/wsgi


    Alias /static/ /var/www/domain.tld/static/

    Alias /robots.txt /var/www/domain.tld/static/robots.txt
    Alias /favicon.ico /var/www/domain.tld/static/img/favicon.ico
</VirtualHost>

1 个答案:

答案 0 :(得分:1)

某些浏览器拒绝跨域Web字体嵌入(不确定它是否适用于全部或部分浏览器),我相信这应该保持原样(安全方面)。 除此之外,您不需要STATIC_URL或MEDIA_URL的FQDN,您的Web服务器负责提供静态内容,该URL用于为资产加载提供可识别的URL。因此,如果您从子域访问您的网站,如果静态中有FQDN,那么一切都将起作用,删除FQDN并只使用您想要的目录名,也可以更轻松地将设置移植到沙箱或生产系统有多个子域名。 你还可以进一步检查这个stackoverflow问题(提供了一些解决方案,但我不知道它是否正常工作,因为我从未遇到过这样的问题):

@font-face fonts only work on their own domain