Codeigniter路由不适用于生产环境

时间:2016-10-13 11:32:50

标签: php .htaccess codeigniter routing

我的codeigniter在我的本地计算机上正常运行但是当我推送到服务器时,路由分崩离析。对于我的设置,codeigniter从名为'secure'的子目录运行,所以这是我在'secure'目录中创建的.htaccess文件:

RewriteEngine on
RewriteBase /secure/
RewriteRule ^assets/less/icons/(.*)$ /secure/assets/icons/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

路径文件目前如下所示:

$route['logout'] = "secure/logout";
$route['passwordReset'] = "secure/PasswordReset";
$route['default_controller'] = 'secure';

在我的本地设置中,如果您要转到URL'/ secure / dashboard'控制器'Dashboard.php'被正确调用并启动索引。但是,如果我转到服务器上的相同URL,它会尝试调用控制器'Secure.php'而不是'Dashboard.php'。

我不确定我的本地环境和停止服务器忽略URL的“安全”部分的服务器之间有什么不同,我认为.htaccess文件中的这一行应该排序子目录:' RewriteBase / secure /'.

目前非常欢迎任何反馈意见:/

1 个答案:

答案 0 :(得分:0)

我终于找到了问题的根源。我的服务器拥有一些不同的开发环境,这些环境不直接从http根目录运行。这导致变量$ _SERVER [' SCRIPT_NAME']等于' /staging/secure/index.php'而不是' /secure/index.php' ;;,所以我只是将以下内容添加到index.php文件的顶部

$_SERVER['SCRIPT_NAME'] = '/secure/index.php';