CodeIgniter URL

默认情况下,CodeIgniter 的 URL 旨在对搜索引擎和人类友好。它使用基于**段**的方法,而不是与动态系统同义的标准“查询字符串”方法:

https://example.com/news/article/my_article

你可以使用 URI 路由 功能灵活地定义 URL。

URI库URL辅助函数 包含可以轻松使用 URI 数据的函数。

URL 结构

基本 URL 仅包含主机名

当你有基本 URL https://www.example.com/ 并想象以下 URL 时:

https://www.example.com/blog/news/2022/10?page=2

我们使用以下术语:

术语

例子

描述

基本 URL

https://www.example.com/

基本 URL 通常表示为 baseURL

URI 路径

/blog/news/2022/10

路由路径

/blog/news/2022/10

相对于基本 URL 的 URI 路径。它也称为 URI 字符串

查询

page=2

基本 URL 包含子文件夹

当你有基本 URL https://www.example.com/ci-blog/ 并想象以下 URL 时:

https://www.example.com/ci-blog/blog/news/2022/10?page=2

我们使用以下术语:

术语

例子

描述

基本 URL

https://www.example.com/ci-blog/

基本 URL 通常表示为 baseURL

URI 路径

/ci-blog/blog/news/2022/10

路由路径

/blog/news/2022/10

相对于基本 URL 的 URI 路径。它也称为 URI 字符串

查询

page=2

删除 index.php 文件

默认情况下, index.php 文件将包含在你的 URL 中:

example.com/index.php/news/article/my_article

如果你的服务器支持重写 URL,你可以使用 URL 重写轻松删除此文件。这由不同的服务器以不同的方式处理,但我们将在这里展示两个最常见的 Web 服务器的示例。

Apache Web 服务器

Apache 必须启用 mod_rewrite 扩展。如果是,你可以使用一些简单规则的 .htaccess 文件。这里是一个这样文件的示例,使用“否定”方法,其中重定向除指定项之外的所有内容:

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

在这个例子中,除了现有目录和现有文件的任何 HTTP 请求都被视为对你的 index.php 文件的请求。

备注

这些特定规则可能不适用于所有服务器配置。

备注

也要从上述规则中排除你可能需要从外界访问的任何资源。

NGINX

在 NGINX 中,你可以定义一个位置块并使用 try_files 指令来获取与我们在上面的 Apache 配置中相同的效果:

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

这将首先查找与 URI 匹配的文件或目录(从 root 和 alias 指令的设置构造每个文件的完整路径),然后将请求以及任何参数发送到 index.php 文件。