在浏览器的语言中重定向用户deppending时的CSS问题

时间:2015-05-22 11:25:34

标签: php html css multilingual

尝试将用户重定向到同一网站的不同版本时,我遇到了一个愚蠢的问题,具体取决于浏览器的语言。

实际上用户似乎已正确地重定向到语言站点版本,问题是该站点没有正确加载CSS和JS文件(我认为这是由于其文件夹结构),而我&# 39;我不确定如何解决它。

为了执行重定向,我设置了一个名为' 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个不同的文件夹放在相应的&#39; index.html&#39;文件:

/ es - &gt;对于西班牙语index.html版本 / en - &gt;对于英文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文件会将他重定向到&#39; / en&#39;或者&#39; / es&#39;文件夹依赖于浏览器语言...然后用户加载&#39; index.html&#39;带有followihg 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>

正如您所看到的,&#39; index.html&#39;定义放置在&#39; root / css&#39;,&#39; root / img&#39;的css,img和js文件的路径。和&#39; root / js&#39;文件夹,但网站没有加载它们......我不知道为什么?

2 个答案:

答案 0 :(得分:1)

您需要调整对外部文件的引用,以“升级”目录(例如../css/styles.css)或从根目录开始(例如/css/styles.css)。我建议使用后者,因为它允许您在目录结构中的任何位置移动,而无需更改任何引用。

如果您正在查看英文页面,那么您所拥有的参考文件正在http://yourdomain.tld/en/css/styles.css查找不存在的文件。

答案 1 :(得分: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开头的/