我刚刚开始学习Codeigniter 3.1.7,当时我遇到了一些奇怪的东西。
我的网站安装在子目录domain.com/site1
中,但会发生以下情况:
<h1><?php echo base_url(); ?></h1>
这会打印 domain.com/site1 /
<h1><a href="<?php echo base_url(); ?>">Link</a></h1>
这会生成一个href = domain.com/site1/domain.com/site1
这怎么可能?我错过了什么?
答案 0 :(得分:3)
base_url()不会返回两次url。 如果您没有指定协议,浏览器会将其视为相对链接,并自动为其添加当前域和路径前缀。
一个正确的例子是:
<h1><a href="//<?php echo base_url(); ?>">Link</a></h1>
根据CodeIgniter文档,看起来您也可以将协议作为第二个参数传递: https://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url
注意:在那里使用//
也更好,因此SSL无关紧要。
使用//
是更好的方法,可以自动检测它所处的环境。
附注:当运行要在安全环境中运行的脚本时,还要确保没有http://
对脚本,图像,CSS等的引用,因为这将包含混合环境一些浏览器会警告你。