Codeigniter 3删除index.php问题

时间:2013-11-24 00:10:29

标签: php apache .htaccess codeigniter mod-rewrite

我在codeigniter 2.1.4中为客户开发了一个小项目,现在,他坚持要迁移到codeigniter 3 DEV版本。我知道这不是一个好的想法但是...... 我的问题是我无法从网址中删除index.php。

这是我的.htaccess文件:

  Options +FollowSymLinks
  RewriteEngine on

  # Send request via index.php
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]

我从config.php文件中删除了index.php
没有运气
我重新安装了LAMP服务器(我在Ubuntu 12.04'上),重新配置了我在Codeigniter 2.1.4和Laravel 4上开发的本地服务器上有其他项目,它们工作得很好,但这个是它的杀了我
谢谢!

10 个答案:

答案 0 :(得分:11)

我这样做了:

使用内容:

在项目的根文件夹中创建.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|css|js|images|robots\.txt)
RewriteRule ^(.*)$ index.php?$1 [L]

然后,在config.php中我修改了这一行。

自:

$config['url_suffix'] = 'index.php';

要:

$config['url_suffix'] = '';

答案 1 :(得分:6)

请将以下代码添加到 .htaccess 文件中,并将其直接包含在 /codeigniter_project_folder/.htacess

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L]

答案 2 :(得分:2)

如果您的Apache服务器启用了mod_rewrite,您可以使用带有一些简单规则的.htaccess文件轻松删除此文件。

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

删除index.php之后的?

答案 3 :(得分:2)

在.htaccess文件中添加以下行

RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]

还可以编辑 application / config / config.php 文件。与

$config[‘index_page’] = “”;
$config[‘uri_protocol’] = “AUTO“;

它会起作用。

答案 4 :(得分:1)

  1. 在项目根文件夹.htacess中创建一个/Your_codeigniter_project_folder/.htacess文件并粘贴此代码

    RewriteEngine On

    RewriteCond%{REQUEST_FILENAME}!-f

    RewriteCond%{REQUEST_FILENAME}!-d

    RewriteRule ^(。*)$ index.php / $ 1 [L]

  2. 在config.php文件$config['base_url'] = 'http://yourhost/CI_project_folder/';

  3. 中设置基本网址
  4. 设置网址后缀$config['url_suffix'] = '.php';
  5. *如果不起作用,请查看*

    1. 确保在.htacess所在的根文件夹中没有任何名称与控制器名称相同的文件。 示例:您有一个users.php控制器,您在/Your_codeigniter_project_folder/users.php中也有一个文件 如果有,请将其删除/Your_codeigniter_project_folder/users.php

    2. 确保您的服务器处于重写模式(从该行的开头删除#)

      LoadModule rewrite_module modules / mod_rewrite.so

答案 5 :(得分:0)

在CI项目的根目录下创建新的.htaccess文件,并在那里添加代码。不要在应用程序文件夹上更改.htaccess文件。这对我有用

答案 6 :(得分:0)

只需下载CI版.htaccess

从root用户复制htaccess.txt.htaccess并将其粘贴到Codeigniter 3项目中。

不要忘记从all_key_combos = hash1.keys.product(hash2.keys) => [["key1", "key3"], ["key1", "key4"], ["key2", "key3"], ["key2", "key4"]] all_key_combos.each do |k1,k2| #do something with k1 and k2 end 文件更改项目名称。

答案 7 :(得分:0)

  1. 在www / project_folder或htdocs / project_folder中创建一个新的htaccess文件

  2. 确保mod_rewrite正在使用echo phpinfo()

  3. 只需粘贴以下代码即可:

    <IfModule mod_rewrite.c>
    
        RewriteEngine on
        RewriteCond $1 !^(index\.php|images|robots\.txt)
        RewriteRule ^(.*)$ /project_folder/index.php/$1 [L]  
    </IfModule>
    
    <IfModule !mod_rewrite.c>
        ErrorDocument 404 /index.php
    </IfModule>
    
  4. 将项目文件夹更改为您自己的

答案 8 :(得分:0)

请注意项目路径的大写。 也就是说,如果base_url为http://localhost/ci/,目录名称为CI,则可能无法正常工作。

答案 9 :(得分:-1)

我再次克隆了git存储库并对灯进行了全新安装,现在可以正常工作了。