这是我的基本网址:
$config['base_url'] = '//'. $_SERVER['HTTP_HOST'].
str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
这是我的观点:
<form action="<?php echo $this->config->base_url().'index.php/certification/add/'; ?>"
method="post" accept-charset="utf-8" onsubmit ='return false;'>
结果如下:
<form action="//localhost/php/index.php/localhost/php/index.php/certification/add/"
method="post" accept-charset="utf-8" onsubmit="return false;">
为什么会这样?(如果您不知道什么是协议相对 URL,请阅读此内容。
您永远不会将前缀 http 或 https 协议设置为base_url。因此,表单操作 url 将按预期以//开头。
看起来您没有正确获取基本 URL。这里已经回答了类似的问题。
$config['base_url']
不应包含文件/脚本路径。如果你自己回显它,在你的情况下,你应该只得到'//localhost/php/'
你想用额外的SCRIPT_NAME东西做什么?
如果我理解正确,您将希望摆脱该部分,然后使用:
<form action="<?php echo $this->config->base_url('index.php/certification/add/')"
(我相信从配置中删除脚本部分后它会像您现在一样工作,但我想这是这样做的"正确的 CI 方式")