CodeIgniter URL

默认情况下,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 文件

当您使用 Apache Web 服务器时,默认情况下,您的 URL 中需要 **index.php** 文件

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 请求外,所有其他 HTTP 请求都被视为对您的 index.php 文件的请求。

注意

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

注意

确保还从上述规则中排除您可能需要从外部世界访问的任何资产。

nginx

在 nginx 下,您可以定义一个 location 块并使用 try_files 指令来获得与上述 Apache 配置相同的效果

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

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