codeigniter动态baseurl通过lan break css fontfamily访问应用程序

时间:2014-04-13 14:30:12

标签: php css .htaccess codeigniter

问题是我想从wifi网络上的其他设备访问我的codeigniter应用程序,我注意到所有css中断;所以我将我的base_url编辑为

的config.php

$config['base_url']= "http://".gethostbyname($_SERVER['SERVER_NAME'])."/ehit";

和我的.htaccess是

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|img|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

现在,当我从其他设备(如

)打开我的应用时,所有内容都正确加载

http://192.168.1.61/ehit除了fontsAwsome。

html来源

<!-- Core CSS -->
    <link rel="stylesheet" type="text/css" href="http://127.0.0.1/ehit/assets/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="http://127.0.0.1/ehit/assets/css/googlefont.css">
    <link rel="stylesheet" type="text/css" href="http://127.0.0.1/ehit/assets/css/font-awesome.css">

未定义fontfamily正确加载的所有内容。在font-awesome.css里面我找到了

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot');
  src: url('../fonts/fontawesome-webfont.eot') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff') format('woff'), url('../fonts/fontawesome-webfont.ttf') format('truetype'), url('../fonts/fontawesome-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}

可能url('..是问题所在;有没有办法解决它?

我调试并发现url是正确的仍然是font-family FontAwesome不存在

curl 'http://127.0.0.1/ehit/assets/fonts/fontawesome-webfont.woff' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.5' -H 'Cache-Control: max-age=0' -H 'Connection: keep-alive' -H 'Host: 127.0.0.1' -H 'Origin: http://localhost' -H 'Referer: http://127.0.0.1/ehit/assets/css/font-awesome.css' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0'

那么问题出在哪里?

修改

当我将$config更改为

时,问题已解决
//$config['base_url']= "http://".gethostbyname($_SERVER['SERVER_NAME'])."/ehit"; //old
$root=(isset($_SERVER['HTTPS']) ? "https://" : "http://").$_SERVER['HTTP_HOST'];
$root.= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;

那是什么问题?

2 个答案:

答案 0 :(得分:0)

您需要在.htaccess中允许.woff文件:

RewriteCond $1 !^(index\.php|assets|woff|eot|img|css|js|robots\.txt|favicon\.ico)

这可能是一个可能的原因。

答案 1 :(得分:0)

to application / config / config.php将localhost更改为您的IP地址
访问您的IP地址上的所有网站

例:
 $ config [&#39; base_url&#39;] =&#39; http://192.168.xx.xx/codeigniter-project/&#39;;

PC  192.168.xx.xx/codeigniter-project<br>

Mobile 192.168.xx.xx/codeigniter-project<br>



tablet  192.168.xx.xx/codeigniter-project<br>
祝你好运。