2015-05-22 35 views
0

根據瀏覽器的語言,嘗試將用戶重定向到同一站點的不同版本時,我遇到了一個愚蠢的問題。將用戶重定向到瀏覽器語言的CSS問題

其實用戶似乎被正確地重定向到語言網站版本,問題是該網站沒有適當地加載CSS和JS文件(我認爲這是由於其文件夾結構),而我不知道我該如何解決它。

要執行我已成立了一個名爲其放置在根文件夾「的index.php」文件重定向,它具有以下PHP代碼:

<?php 
    header("Location: " . getLanguage()); 

    function getLanguage(){ 
    $availableLanguages = array('es', 'en'); 
    $defaultLanguage = 'en'; 
    $token = strtok($_SERVER['HTTP_ACCEPT_LANGUAGE'], ",;"); 
    while ($token !== false) { 
     $language = substr($token, 0, 2); 
     if (in_array($language, $availableLanguages)) { 
     return $language; 
     } 
     $token = strtok(",;"); 
    } 
    return $defaultLanguage; 
    } 
?> 

正如你所看到的只有2個語言(英語和西班牙語)。

下一步是放置2個不同的文件夾與他們各自的「index.html的」文件:

/ES - >爲西班牙的index.html版本 /EN - 爲對英語> index.html的版本

所以我們可以看到下面的示例文件夾結構的服務器:

  • HTTP/IMG/picture.jpg
  • HTTP/JS /的script.js
  • HTTP/CSS/style.css中
  • HTTP/EN/index.html的(該網站的英文版)
  • HTTP/ES/index.html的(該網站的西班牙語版本)
  • HTTP/index.php

當用戶進入該站點時,php文件將他重定向到'/ en'或'/ es'文件夾,然後在瀏覽器語言中刪除...然後用戶加載'索引。 html'文件與下面的HTML結構:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>my site in english</title> 
    <link rel='icon' href='img/favicon.png'> 
    <!--Styles--> 
    <link href="css/styles.css" type="text/css" rel="stylesheet"> 
</head> 

<body> 
<p>this is an example</p> 
<!--Styles--> 
<script src="js/script.js"></script> 
</body> 
</html> 

因此,您可以看到,'index.html'定義了位於'root/css','root/img'和'root/js'文件夾的css,img和js文件的路徑,但是網站不會加載它們......我不知道爲什麼?

+0

如果我理解正確,那麼'css/styles.css'將在'en'或'es'目錄中查找'css'目錄。您可能希望在網址前加上「../」,例如'../ CSS/styles.css'。 –

+0

是的,這是問題......謝謝 –

回答

1

索引文件,現在是內/ EN或/ ES,因此:

<link href="css/styles.css" type="text/css" rel="stylesheet"> 

應該是:

<link href="../css/styles.css" type="text/css" rel="stylesheet"> 

注意添加../回去的文件夾。您擁有的js和其他資源也一樣。

我會建議使用絕對路徑,這樣你就不會遇到類似的問題:

<link href="/css/styles.css" type="text/css" rel="stylesheet">

注意/的URI的開始。

+0

謝謝!我嘗試在URI的開頭添加'/',但它不起作用,但是通過添加'../'它修復了問題:) –

+0

'/'在開頭是使用它的最佳方式。有沒有工作的原因可能是下面的一個或多個問題: 1-您沒有使用Web服務器並直接在瀏覽器中運行.html文件,即'/'沒有指向文檔根目錄 2-文件夾路徑錯誤。 3-文檔根目錄(/)從/ css(可能是/ http?)上升一級 – Adon

+0

當然,也可能有其他問題,我沒有在這裏列出。 – Adon

1

您需要調整對外部文件的引用,以便「升級」目錄(例如,../css/styles.css)或從根目錄開始(例如/css/styles.css)。我推薦後者,因爲它允許您在目錄結構中的任何位置移動,而無需更改任何引用。

如果您正在查看(例如)英文頁面,那麼所提供的參考文獻正在尋找不存在的文件http://yourdomain.tld/en/css/styles.css

+0

謝謝,那工程! –

相關問題