CodeIgniter 路由总是通过 index.php?

Posted

技术标签:

【中文标题】CodeIgniter 路由总是通过 index.php?【英文标题】:CodeIgniter routing always through index.php? 【发布时间】:2012-04-15 12:26:28 【问题描述】:

CodeIgniter 初学者在这里。我网站的基本 URL 是“http://localhost/routing/”。

// config.php
$config['base_url'] = 'http://localhost/routing/';

我只是尝试使用以下规则将 url 'http://localhost/routing/admin' 路由到管理控制器,但它不起作用。相反,我必须使用'http://localhost/routing/index.php/admin'。

$route['default_controller'] = 'seasons';
$route['admin'] = 'admin';
$route['404_override'] = '';

问题:有没有办法从网址中删除“index.php”?

【问题讨论】:

【参考方案1】:

在 .htaccess 文件和 config.php 中进行更改

application/config.php

$config['index_page'] = '';

.htaccess

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

【讨论】:

这个答案很好,但完成这项工作的最后一个技巧是将 .htaccess 从:“yourprojectfolder/application/.htaccess”移动到“yourprojectfolder/.htaccess”【参考方案2】:

有没有办法从 url 中删除 'index.php'?

是的,除了是very popular question on SO,它还被in the CodeIgniter documentation 覆盖(非常好,我强烈推荐阅读)。

【讨论】:

我不得不使用以下规则,尽管 'RewriteRule (.*)$ index.php' 而不是 'RewriteRule ^(.*)$ /index.php/$1 [L]'。跨度> 很高兴你在这里提供了链接,尽管我认为 CodeIgniter 团队应该删除这个奇怪的要求,或者至少在他们的入门教程中解释一下,而不是像谁想要那样假装它看起来很正常在他们的网址中间有“index.php”开始......:S @XunYang 我也在想同样的事情。但是,它让我对路由进行了更多研究。【参考方案3】:

在您的.htaccess 中写下这个。还可以查找更多信息:Codeigniter Guide

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

【讨论】:

以上是关于CodeIgniter 路由总是通过 index.php?的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter - 如何在 url 路由中删除类名

codeigniter 路由问题

Codeigniter路由:如何在url中显示名称而不是id号

Codeigniter 中的路由

PHPStorm 和 CodeIgniter 路由问题

SuSe 上的 CodeIgniter 404 页面路由