我正试图使用codeigners(3)重定向($domain)将example.com重定向到子域.example.com。但当我只想要$domain时,我在浏览器地址栏中看到的是base_url/$domain。
控制器设置为查看url并确定用户是否在没有子域的情况下访问过。如果是这种情况,他们会被重定向到一个视图,询问他们来自哪里。然后,这些数据通过$_POST传递给同一个控制器,告诉它它们来自哪里。
$this->load->helper('url');
$subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2);
$subdomain = $subdomain_arr[0];
if ($_POST != NULL)
{
$post = $_POST;
$subnames = $this->sendy->subName($post);//returns subdomain
foreach ($subnames as $subname)
{
$sub = $subname->subdomain;
}
$subdomain = $sub;
$period = ".";
$domain = $subdomain.$period.$subdomain_arr[0].$period.$subdomain_arr[1];
redirect($domain, 'auto');
}
有成千上万个可能的子域。我只需要codeigniter来准备子域并重新加载页面,以便url在浏览器地址栏中显示为子域。example.com.
Derp!我在$domain var中添加了http://,现在它可以正常工作了。对不起你的混蛋。
$subdomain_arr = explode('.', $_SERVER['HTTP_HOST'], 2);
$subdomain = $subdomain_arr[0];
if ($_POST != NULL)
{
$post = $_POST; //this is the library name
$subnames = $this->sendy->subName($post);
foreach ($subnames as $subname)
{
$sub = $subname->subdomain;
}
$subdomain = $sub;
$period = ".";
$http = "http://";
$domain = $http.$subdomain.$period.$subdomain_arr[0].$period.$subdomain_arr[1];
redirect($domain, 'location');
}
现在添加了$http之后,重定向就可以正常工作了。