清理URL - 从CI中的URL中删除index.php不起作用

时间:2016-02-24 01:15:59

标签: php apache .htaccess mod-rewrite codeigniter-3

我正在使用CodeIgniter v.3.0.4,我无法从网址中删除'index.php'。

  1. 我添加了.htaccess文件:

    sid
  2. 在应用程序文件夹中> config.php>我将值编辑为:

    <ifmodule mod_rewrite.c="">
    RewriteEngine On
    RewriteBase /project_01/
    
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /index.php?/$1 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
    </ifmodule>
    <ifmodule !mod_rewrite.c="">
    
    ErrorDocument 404 /index.php
    </ifmodule>
    

    $config['index_page'] = '';
    

    $config['uri_protocol']= 'REQUEST_URI';
    
  3. 我检查过我的Apache服务器配置文件旁边没有井号:

    $config['base_url'] = 'http://localhost/Project_01/';
    
  4. 我做错了什么?或者我不做什么?

    在先前版本的CI中它运行良好,有什么变化?

1 个答案:

答案 0 :(得分:1)

由于您的规则是将请求发送到查询字符串,因此您需要QUERY_STRING使用uri_protocol,而不是REQUEST_URI

作为替代方案,如果您希望保留REQUEST URI,则可以将规则更改为以下任一项:

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