假设我有一个显示http://localhost.com/welcome/blah_blah
的当前网址,从此网址中我希望只能http://localhost.com/
进入网页。
怎么做?
我知道echo current_url();
提供了完整的网址。但我只想要http://localhost.com
不包括controller_name,clasname等。
预期输出
如果我的base_url = http://www.exaple.com/folder
& current_url = http://exaple.com/folder/class/method/blah_blah
,那么我希望域名为exaple.com
而不是www.exaple.com
!
答案 0 :(得分:5)
您可以使用网址帮助中的base_url()
。它返回的网站域没有您在config.php
http://ellislab.com/codeigniter/user-guide/helpers/url_helper.html
在收到其他信息后更新:
如果您只是想要域名而没有子域名(www。),那么您发布的额外信息可以正常运行:
$this->load->helper('url');
$url_parts = parse_url(current_url());
echo str_replace('www.', '', $url_parts['host']);
但是如果您仍然需要http或https,那么这将完成这项工作:
$this->load->helper('url');
$url_parts = parse_url(current_url());
echo $url_parts['scheme'] . '://' . str_replace('www.', '', $url_parts['host']);
然而,这只会删除www。子域名,但如果可能存在其他子域名,则可以很容易地进行调整。
答案 1 :(得分:2)
在php中你可以通过这个函数获得它
function siteURL() {
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'] . '/';
return $protocol . $domainName;
}
答案 2 :(得分:1)
将以下函数添加到url_helper.php,然后像调用getDomain()
一样调用base_url()
function getDomain()
{
$CI =& get_instance();
return preg_replace("/^[\w]{2,6}:\/\/([\w\d\.\-]+).*$/","$1", $CI->config->slash_item('base_url'));
}
答案 3 :(得分:0)
简单使用以下代码,您将获得当前的域名。它的http或https
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'] . '/';
$url = $protocol . $domainName;