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 文件以及任何参数。