codeigniter为子文件夹中的所有内容返回404

时间:2015-06-15 17:01:51

标签: php wordpress .htaccess codeigniter mod-rewrite

在我的开发环境(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消息。

4 个答案:

答案 0 :(得分:3)

更改此

config.php

  1. $config['base_url'] = '';
  2. $config['index_page'] = '';
  3. $config['uri_protocol'] = 'AUTO';
  4. 然后在.htaccess(**这应该放在应用程序文件夹的一侧**)

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L] 
    </IfModule>
    

    阅读此内容

    1. Controllers
    2. Models
    3. Views

答案 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.希望这将解决问题。