2016-03-22 46 views
-1

我目前正在嘗試創建一個可以通過我的各個域訪問的字體庫。將字體提供給多個子域問題

我對這個問題進行了大量的研究,看起來這個問題源於'Access-Control-Allow-Origin'必須在我的.htaccess文件中正確設置。

經過多次嘗試,我根本無法解決問題。

我已經將它設置如下:

在我的服務器的根目錄我創建了一個的.htaccess文件。這個文件包含

<IfModule mod_headers.c> 
<FilesMatch "\.(eot|font.css|otf|ttc|ttf|woff|woff2)$"> 
    Header set Access-Control-Allow-Origin "*" 
</FilesMatch> 
</IfModule> 
<IfModule mod_mime.c> 
# Web fonts 
AddType application/font-woff woff 
AddType application/vnd.ms-fontobject eot 

在我的服務器上的根文件夾是然後包含包含我的各種域的文件夾。因此:

-ROOT Folder 
    | 
    -.htaccess 
    -Fonts Folder (which contains the relevant font files to serve) 
    -Domain 1 Root Folder 
    -Domain 2 Root Folder 
    -Domain 3 Root Folder 
    -Domain 4 Root Folder 

我確定我在某種程度上完全無能並做一些非常根本性的錯誤,但現在我只是看不到它,所以對這個問題的任何幫助將非常感激。

回答

1

您的方式是正確的......但可以肯定的是,當您從主域以外訪問時,請檢查Chrome控制檯(例如),是否收到一些錯誤或通知。也許是用htaccess或錯誤的路徑......但我們需要一個跟蹤它。確保.htaccess文件在共享庫/字體的文件夾中。

AMM,只是可以肯定,我將粘貼的項目,用這種庫的使用工作的礦山htaccess的一部分(在我的情況,我允許只爲那些域):

<ifModule mod_headers.c> 
    SetEnvIf Origin "http(s)?://(www\.)?(domain1.t.com|dom2.t.com|dom3.t.com|dom4.t.com)$" AccessControlAllowOrigin=$0$1 
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 
</ifModule> 

或者只是

<ifModule mod_headers.c> 
    Header add Access-Control-Allow-Origin * 
</ifModule> 

祝你好運。

+0

非常感謝Boris.I現在將對此進行研究。但是,想到的一點是,您聲明.htaccess文件應位於腳的文件夾中.....當前.htaccess位於ROOT和FONTS文件夾位於根目錄下。我應該將.htaccess移動到FONTS文件夾中嗎? –

+0

它很好嘗試。在任何情況下,您都不需要爲不需要的(所有互聯網)域提供所有文件。所以請嘗試......並且不要忘記查看控制檯爲您提供的有關傳輸文件(網絡部分)的信息。 給你一個回覆,當你做到了:)祝你好運! –

+0

鮑里斯,我已經看到了光線和謝謝你,讓我看到它!儘管答案很簡單...一個簡單的錯字代碼錯誤,其中每個字體都有.eot之前它的文件名!例如eot.woff.Crazy!您的第一個代碼完美地工作,並且正是我所期望的,因爲我想將訪問權限限制在我自己的域中。非常感謝您的輸入,正如我所說的那樣非常感謝。 –

0

只是爲了確認任何其他人有這個問題,我可以確認它通過執行以下操作來解決。

1)創建一個.htaccess文件

2)將以下代碼到.htaccess文件:

<ifModule mod_headers.c> 
SetEnvIf Origin "http(s)?://(www\.)?(domain1.t.com|dom2.t.com|dom3.t.com|dom4.t.com)$" AccessControlAllowOrigin=$0$1 
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin 

3)輸入您要允許訪問域以上代碼

(domain1.t.com | dom2.t.com | dom3.t.com | dom4.t.com)

應該成爲:

(mydomain.com | mydomain2.com | mydomain3.com | mydomain4.com)

其中「MYDOMAIN。COM」是你在你的服務器

的頂級ROOT目錄給予

4)將文件訪問的域名您列出的域現在應該能夠給您的字體的鏈接時,正確訪問。