使用htaccess在服务器上运行,从codeginiter url中删除index.php

时间:2015-10-01 04:14:37

标签: .htaccess codeigniter mod-rewrite

.htaccess代码:

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

也改变配置文件:

$config['index_page'] = ' ';

$config['uri_protocol'] = "REQUEST_URI";

mod_rewrite也已启用。 虽然这段代码不起作用。

4 个答案:

答案 0 :(得分:0)

当您要求Apache将URI发送到REQUEST_URI时,您无法使用QUERY_STRING协议。

因此,请更改您的.htaccess或您的配置以使其匹配。我的建议是更改.htaccess

RewriteRule ^ index.php [L]

答案 1 :(得分:0)

您是否尝试过AUTO代替REQUEST_URI。即使我遇到了类似的问题,但是当我将其更改为AUTO并在我的情况下对.htaccess进行微小更改时,我得到了解决。

$config['index_page'] = '';

$config['uri_protocol'] = 'AUTO';

的.htaccess -

RewriteEngine on
RewriteCond $1 !^(index\.php|public|\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1

OR

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

如果对您的案件不起作用,抱歉。

CodeIgniter htaccess and URL rewrite issues

答案 2 :(得分:0)

我已运行CI 3应用程序并正常使用此.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    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>

答案 3 :(得分:0)

更改此

在&#39; 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>

并使用base_url()功能访问网址。

ex <form action="<?php echo base_url()?>Controller_name/Method_name"

  

注意: 要使用base_url(),您必须在autoload.php

上启用它
$autoload['helper'] = array('url');