codeigniter 3在不同端口

时间:2017-10-23 07:15:23

标签: php codeigniter ssl

通常我的codeigniter在端口443上运行。

但我有几页我想获得客户端SSL证书,所以我在8443上创建了一个vhost。

使用代码点火器之外的PHP文件,我可以访问并获取客户端的证书信息。

然而,当我访问codeigniter页面时,我收到错误:

  

ERR_TOO_MANY_REDIRECTS

我的base_url设置为:

$config['base_url'] = isset($_SERVER['HTTP_HOST']) ? "https://".$_SERVER['HTTP_HOST'] : '';

我也尝试将其设置为空,以便codeigniter自行获取:

$config['base_url'] = '';

但这仍然显示同样的错误。

任何人指针可能出错?

更新

我将HTTP_HOST更改为SERVER_NAME,但它将流量重定向到:8443为默认值,而不将端口附加到网址。

所以我添加了以下代码:

$port = $_SERVER['HTTP_PORT'];
if($port == "8443")
     $config['base_url'] = isset($_SERVER['SERVER_NAME']) ? "https://".$_SERVER['SERVER_NAME'].":8443" : ''; 
 else
     $config['base_url'] = isset($_SERVER['SERVER_NAME']) ? "https://".$_SERVER['SERVER_NAME'] : ''; 

端口现在仍然附加到URL,但是我收到以下错误:

  

致命错误:无法重新声明__autoload()(之前已在声明中声明)   /bxs/www/application/config/config.php:380)in   第380行/bxs/www/application/config/config.php

更新2

最终设法修复它,不得不改变以下内容:

config.php

$port = $_SERVER['SERVER_PORT'];
if($port == "8443")
     $config['base_url'] = isset($_SERVER['SERVER_NAME']) ? "https://".$_SERVER['SERVER_NAME'].":8443" : ''; 
 else
     $config['base_url'] = isset($_SERVER['SERVER_NAME']) ? "https://".$_SERVER['SERVER_NAME'] : ''; 

ssl.php

if(!in_array($class,$exclude)) {
  // redirecting to ssl.
  $CI->config->config['base_url'] = str_replace('http://', 'https://', $CI->config->config['base_url']);
  if (($_SERVER['SERVER_PORT'] != 443) && ($_SERVER['SERVER_PORT'] != 8443)) redirect($CI->uri->uri_string());
}   

因为SSL上没有8443的条目,所以保留了重定向,通过将8443添加到if子句,它就被解决了。

0 个答案:

没有答案