如何在codeigniter中读取当前域的URL?

时间:2014-03-29 06:43:08

标签: codeigniter

假设我有一个显示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

我是facing a issue

4 个答案:

答案 0 :(得分:5)

您可以使用网址帮助中的base_url()。它返回的网站域没有您在config.php

中配置的index.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;