# CodeIgniter URL
默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和人类友好。 不同于使用标准的 “查询字符串” 方法,CodeIgniter 使用基于段的方法:
~~~
example.com/news/article/my_article
~~~
>[info] 注解
> 在 CodeIgniter 中也可以使用查询字符串的方法,参见下文。
## URI 分段
如果遵循模型-视图-控制器模式,那么 URI 中的每一段通常表示下面的含义:
~~~
example.com/class/function/ID
~~~
1. 第一段表示要调用的控制器 **类** ;
2. 第二段表示要调用的类中的 **函数** 或 **方法** ;
3. 第三段以及后面的段代表传给控制器的参数,如 ID 或其他任何变量;
[URI 类](http://codeigniter.org.cn/user_guide/libraries/uri.html) 和 [URL 辅助函数](http://codeigniter.org.cn/user_guide/helpers/url_helper.html) 包含了一些函数可以让你更容易的处理 URI 数据,另外,你的 URL 可以通过 [URI 路由](http://codeigniter.org.cn/user_guide/general/routing.html) 进行重定向从而得到更大的灵活性。
## 移除 URL 中的 index.php
默认情况,你的 URL 中会包含 **index.php** 文件:
~~~
example.com/index.php/news/article/my_article
~~~
如果你的 Apache 服务器启用了 mod_rewrite ,你可以简单的通过一个 .htaccess 文件再加上一些简单的规则就可以移除 index.php 了。下面是这个文件的一个例子, 其中使用了 "否定条件" 来排除某些不需要重定向的项目:
~~~
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
~~~
在上面的例子中,除已存在的目录和文件,其他的 HTTP 请求都会经过你的 index.php 文件。
>[info] 注解
> 这些规则并不是对所有 Web 服务器都有效。
> 确保使用上面的规则排除掉你希望能直接访问到的资源。
## 添加 URL 后缀
在你的 **config/config.php** 文件中你可以指定一个后缀,CodeIgniter 生成 URL 时会自动添加上它。譬如,一个像这样的 URL:
~~~
example.com/index.php/products/view/shoes
~~~
你可以添加一个后缀,如:**.html** ,这样页面看起来就是这个样子:
~~~
example.com/index.php/products/view/shoes.html
~~~
## 启用查询字符串
有些时候,你可能更喜欢使用查询字符串格式的 URL:
~~~
index.php?c=products&m=view&id=345
~~~
CodeIgniter 也支持这个格式,你可以在 **application/config.php** 配置文件中启用它。 打开你的配置文件,查找下面这几项:
~~~
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
~~~
你只要把 "enable_query_strings" 参数设为 TRUE 即可启用该功能。然后通过你设置的 trigger 关键字来访问你的控制器和方法:
~~~
index.php?c=controller&m=method
~~~
>[info] 注解
> 如果你使用查询字符串格式的 URL,你就必须自己手工构造 URL 而不能使用 URL 辅助函数了(以及其他生成 URL 相关的库,譬如表单辅助函数),这是由于这些库只能处理 分段格式的 URL 。
- 欢迎使用 CodeIgniter
- 安装说明
- 下载 CodeIgniter
- 安装说明
- 从老版本升级
- 疑难解答
- CodeIgniter 概览
- CodeIgniter 将从这里开始
- CodeIgniter 是什么?
- 支持特性
- 应用程序流程图
- 模型-视图-控制器
- 设计与架构目标
- 教程 - 内容提要
- 加载静态内容
- 读取新闻条目
- 创建新闻条目
- 结束语
- 常规主题
- CodeIgniter URL
- 控制器
- 保留名称
- 视图
- 模型
- 辅助函数
- 使用 CodeIgniter 类库
- 创建类库
- 使用 CodeIgniter 驱动器
- 创建驱动器
- 创建核心系统类
- 创建附属类
- 钩子 - 扩展框架核心
- 自动加载资源
- 公共函数
- 兼容性函数
- URI 路由
- 错误处理
- 网页缓存
- 程序分析
- 以 CLI 方式运行
- 管理你的应用程序
- 处理多环境
- 在视图文件中使用 PHP 替代语法
- 安全
- PHP 开发规范
- 类库参考
- 基准测试类
- 缓存驱动器
- 日历类
- 购物车类
- 配置类
- Email 类
- 加密类
- 加密类(新版)
- 文件上传类
- 表单验证类
- FTP 类
- 图像处理类
- 输入类
- Javascript 类
- 语言类
- 加载器类
- 迁移类
- 输出类
- 分页类
- 模板解析类
- 安全类
- Session 类
- HTML 表格类
- 引用通告类
- 排版类
- 单元测试类
- URI 类
- 用户代理类
- XML-RPC 与 XML-RPC 服务器类
- Zip 编码类
- 数据库参考
- 数据库快速入门: 示例代码
- 数据库配置
- 连接你的数据库
- 查询
- 生成查询结果
- 查询辅助函数
- 查询构造器类
- 事务
- 数据库元数据
- 自定义函数调用
- 数据库缓存类
- 数据库工厂类
- 数据库工具类
- 数据库驱动器参考
- 辅助函数参考
- 数组辅助函数
- 验证码辅助函数
- Cookie 辅助函数
- 日期辅助函数
- 目录辅助函数
- 下载辅助函数
- 邮件辅助函数
- 文件辅助函数
- 表单辅助函数
- HTML 辅助函数
- 语言辅助函数
- Inflector 辅助函数
- 数字辅助函数
- 路径辅助函数
- 安全辅助函数
- 表情辅助函数
- 字符串辅助函数
- 文本辅助函数
- 排版辅助函数
- URL 辅助函数
- XML 辅助函数
- 向 CodeIgniter 贡献你的力量