CodeIgniter中的htaccess问题

时间:2013-02-22 16:05:15

标签: .htaccess codeigniter

如何删除index.php以便可以利用CI技巧?当我删除'index.php'时,它将通过404错误或403,即使控制器上存在必要的类。

这是目前我在根目录上的.htaccess:

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

config.php上的其他CI规范:

$config['index_page'] = '';

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

启用了rewrite_module。

在httpd.conf上:

<Directory />
Options FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>

编辑:要清楚,我可以访问我的应用的“主页”(http://localhost/projectfolder)。但是,当我访问特定控制器(http://localhost/projectfolder/admin)时,它将无法工作。但当index.php位于主机和控制器(http://localhost/projectfolder/index.php/admin)之间时,它可以工作。我正在寻找解决'index.php'之间的问题。

4 个答案:

答案 0 :(得分:0)

请确保已启用mod_rewrite。也请像这样试试httpd.conf

<Directory /youdirectory path>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
</Directory>

另请检查CodeIgniter网址设置here

答案 1 :(得分:0)

扩展永联的评论:

您没有物理删除index.php文件。你得到的是403,因为目录列表被拒绝(并且index.php不存在),而控制器/方法上的404是因为它们实际上不存在。

将CodeIgniter index.php放回它所属的位置,你应该没问题。这一行:

$config['index_page'] = '';

是“删除”index.php的重要部分。使用此空白,CodeIgniter的url / uri帮助函数不会将index.php放入网址。

有关详细信息,请参阅base_url上的my answer

答案 2 :(得分:0)

如果您正在使用localhost,则$ _SERVER ['DOCUMENT_ROOT']将位于您的wamp或xampp文件夹中。它不包含项目文件夹名称。

因此,如果您的项目文件夹名称为“test”,则必须按如下所示编写htaccess。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /test/index.php/$1 [L]

您必须在最后一行添加“test /”,您不需要在URL中添加index.php。 我希望这会奏效。

答案 3 :(得分:0)

几次读完你的问题之后,它终于有意义了。我相信你需要添加如下的RewriteBase:

RewriteEngine on
RewriteBase /projectfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]