CI框架中使用.htaccess隐藏index.php全攻略

0 下载量 66 浏览量 更新于2024-08-30 收藏 86KB PDF 举报
在CodeIgniter (CI)框架中,为了提升URL的简洁性和SEO优化,通常希望隐藏URL中的`index.php`部分。CI遵循MVC(模型-视图-控制器)架构,所有请求默认通过`index.php`进行路由。默认情况下,项目URL可能看起来像`http://localhost/index.php/blog/logs/this_is_a_test_entry`,这在实际部署和搜索引擎优化中显得不够友好。 官方文档中提到了一个解决这个问题的方法,即使用`.htaccess`文件进行URL重写。然而,官方提供的.htaccess配置可能并不适用于所有情况,因此需要一个更全面的解决方案。以下是具体步骤: 1. 创建.htaccess文件: - 在项目根目录(与`index.php`同一级别)创建或下载一个`.htaccess`文件。 - 将以下代码复制到文件中,启用RewriteEngine并定义规则: ``` RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] ``` 这个规则检查请求的文件是否存在,如果不存在且不是一个目录,就会将URL中的路径附加到`index.php`后面。 2. 启用.htaccess: - 确保Web服务器(如Apache或IIS)支持`.htaccess`。对于Apache,需要启用mod_rewrite模块;对于IIS,可能需要安装ISAPI_Rewrite拓展。 3. 修改config.php配置: - 打开`application/config/config.php`文件,找到`$config['index_page']`设置,将其从`"index.php"`改为`""`,表示不包含`index.php`。 完成以上三个步骤后,重启你的应用。如果配置正确,访问URL时,`index.php`应该会被自动隐藏,URL将以更简洁的形式呈现,例如`http://localhost/blog/logs/this_is_a_test_entry`,这对于SEO优化和用户体验有很大帮助。 需要注意的是,虽然这个配置能隐藏`index.php`,但它不会改变URL结构,只是内部重定向。如果你遇到任何问题,确保检查服务器配置、权限以及.htaccess文件是否正确编写。