从Codeigniter中的URL中删除index.php

时间:2013-09-02 10:16:55

标签: codeigniter mod-rewrite

我已经做了很多时间。但是,我也被困在这里(在不同的服务器中)并且无法弄清楚问题是什么。

完成htaccess编辑

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /glt.me/CI/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /glt.me/CI/index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
  • 重写模块已启用(根据客户关怀perons所说)
  • 错误:

    内部服务器错误

    服务器遇到内部错误或配置错误,无法完成您的请求。

    请联系服务器管理员cgiadmin@yourhostingaccount.com并告知他们错误发生的时间,以及可能导致错误的任何操作。

    服务器错误日志中可能提供了有关此错误的更多信息。

    此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。

测试这个案例:

http://glt.me/CI/test
http://glt.me/CI/index.php/test

7 个答案:

答案 0 :(得分:6)

这是一种简单的方法,它可以从您的网址

中删除index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|uploads|css|js|lib|img|bootstrap|robots\.txt)
RewriteRule ^(.*)$ /manage/index.php/$1 [L]

instead of manage put your own application folder name.

答案 1 :(得分:2)

使用以下htaccess代码从您的codeigniter网址中删除index.php

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ ./index.php/$1 [L]

答案 2 :(得分:2)

虽然您的客户确认重写模块正在运行,但您不能自己确认,请使用下面的代码在项目的根目录下创建一个php文件并尝试浏览该文件。

<?php
 if( !function_exists('apache_get_modules')){
        echo 'Rewrite module not available';
 }else{
    if(in_array('mod_rewrite',apache_get_modules()))
        echo 'Rewrite module enabled';
 }

答案 3 :(得分:1)

首先检查您的apache是​​否支持mod_rewrite。如果是,则添加.htaccess文件。我的codeigniter .htaccess文件是:

DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

最后在您的配置文件中,更改您的base_url,如果已添加,请从中删除index.php。

答案 4 :(得分:0)

DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
RewriteRule ^pages/.*$ http://localhost/test/? [R=301,L]

答案 5 :(得分:0)

我想在这里做出贡献,因为我自己遇到了麻烦。我只使用IIS5.1进行开发(强烈不推荐!)

1-确保config.php文件包含:

$config['index_page'] = '';

2-我的应用程序不在根文件夹中,它位于localhost / CodeIgniter /。我将config.php更新为:

$config['base_url'] = 'http://localhost/CodeIgniter/';

3-您需要Mod-Rewrite功能。这是嵌入大多数服务器,但IIS5.1需要一个单独的工具。我使用过:IIS Mod-Rewrite by micronovae。只要你在localhost

上使用它就是免费的

我把以下代码(而不是CodeIgniter,放置文件夹的名称):

RewriteEngine on
RewriteCond $0 !^/CodeIgniter/(css|js|swf|images|system|tools|themes|index\.php) [NC]
RewriteRule ^/CodeIgniter/(.*)$ /CodeIgniter/index.php/$1 [L]

如果您的应用程序位于根目录,那么您应该使用的代码就是:

RewriteEngine on
RewriteCond $0 !^(css|js|swf|images|system|tools|themes|index\.php) [NC]
RewriteRule ^(.*)$ index.php/$1 [L]

希望它有所帮助。

答案 6 :(得分:0)

在WAMP环境中,只需要三个步骤就可以从Codeigniter中的url中删除index.php。

1)与应用程序持有者并行创建.htacess文件,只需复制以下代码:

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

2)将$ config [&#39; index_page&#39;]更改为应用程序文件夹中config.php中的空白,如下所示:

$config['index_page'] = '';

3)启用apache的“rewrite_module”。

重启你的apache并完成它。

详细信息:http://sforsuresh.in/removing-index-php-from-url-of-codeigniter-in-wamp/