在我的开发环境(Mac OS,Apache,WP文件夹中的CI应用程序)中,我的应用程序运行正常。今天我将它部署到服务器(Ubuntu Server,Apache,WP文件夹中的相同CI应用程序),我尝试的所有内容都返回404页面。
这是我的app / .htaccess:
SetEnv CI_ENV development
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
此服务器已启用mod_rewrite。
在我的config.php中,我已经尝试过:
$config['base_url'] = 'http://server/app/';
// problem in both situations
$config['index_page'] = 'index.php';
$config['index_page'] = '';
这里有什么问题?当我转到http://server/app/index.php时,我收到了404消息。如果我转到http://server/app/controller/action,我也会收到404消息。
答案 0 :(得分:3)
更改此
在config.php
$config['base_url'] = '';
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
然后在.htaccess
(**这应该放在应用程序文件夹的一侧**)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
阅读此内容
答案 1 :(得分:0)
尝试删除SetEnv。您可以在index.php文件中设置环境。
对于base_url,请确保它是index.php页面所在的文件夹级别。
/ app /应包含应用程序文件夹。
对于index_page,我不会将其设置为空白。把它放回'index.php';
在你的htaccess中试试这个,
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^yoursite.com [nc]
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [r=301,nc]
RewriteCond $1 !^(index\.php|js|img|css|application|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
您可能不需要在RewriteCond中包含应用程序文件夹,但无论如何都要尝试。
确保在/config/routes.php文件中设置了default_contoller。
$route['default_controller'] = "default_controller_here";
答案 2 :(得分:0)
解决: 我刚刚发现控制器的文件必须有大写字母的名称。
http://www.codeigniter.com/user_guide/general/controllers.html
答案 3 :(得分:0)
我有同样的问题。只需将文件权限更改为644即可转换为index.php 当我通过git提取更改时。权限更改为664,因此更改回644.希望这将解决问题。