我已在Ubuntu 17.04服务器中安装了最新的Apache,PHP7和codeigniter。我已经为其分配了本地IP,让我们说 10.20.30.40 。
此codeigniter应用程序应在本地工作,也应该在外部工作(互联网)。
还有一个中间nginx服务器(我无法访问)将外部(Internet)的所有内容重定向到我的服务器,因此我使用xdebug进行了一些测试和调试:
http://10.20.30.40/ciapp/index.php/test
工作正常
$_SERVER['REQUEST_URI'] = string '/ciapp/index.php/test'
http://www.subdomain.company.xxx/ciapp/index.php/test
不起作用(它会抛出codeigniter 404页面)
$_SERVER['REQUEST_URI'] = string '//ciapp/index.php/test'
(注意前面的双斜线)
http://10.20.30.40//ciapp/index.php/test
(请注意有意的双重斜线)没有工作,得到CI的404
我有什么可以用REQUEST_URI做的,所以它可以在外面工作吗?或许这是另一个问题......?
PS:配置在其他地方建议:
$config['base_url'] = $_SERVER['HTTP_HOST'] == '10.20.30.40' ? 'http://10.20.30.40/ciapp/' : 'http://www.subdomain.company.xxx/ciapp/';
答案 0 :(得分:0)
尝试使用基本网址
$root = "http://".$_SERVER['HTTP_HOST'];
$root .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']);
$config['base_url'] = "$root";
答案 1 :(得分:0)
最后通过设置uri_protocol = PATH_INFO
解决文件: application / config / config.php
$config['base_url'] = $_SERVER['HTTP_HOST'] == '10.20.30.40' ? 'http://10.20.30.40/ci/' : 'http://www.subdomain.company.xxx/ciapp/';
$config['index_page'] = '';
$config['uri_protocol'] = 'PATH_INFO';
文件: .htaccess(从网址中删除index.php)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
现在它在本地完美运行并从Internet加载