如果在 href 属性内,base_url() 给出错误的 link

base_url() gives wrong link if inside href attribute

我刚开始学习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

这怎么可能?我错过了什么?

url 不会被 base_url() 返回两次。 如果您不指定协议,浏览器会将其视为相对协议 link,自动为其添加当前域和路径前缀。

一个正确的例子是这样的:

<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,等等,因为这将包含一些浏览器会警告您的混合环境。