CodeIgniter URL

기본적으로 CodeIgniter의 URL은 검색 엔진 및 인간 친화적으로 설계되었습니다. CodeIgniter는 URL 표준 접근 방식인 “query-string” 사용하지 않고 segment-based 접근 방식을 사용합니다.

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

URL은 URI 라우팅 기능을 사용하여 유연하게 정의할 수 있습니다.

URI 라이브러리URL 도우미에는 URI 데이터로 쉽게 작업할 수 있는 함수가 포함되어 있습니다.

URL 구조

Base URL에 호스트 이름만 포함됨

Base URL이 https://www.example.com/일 때 다음 URL을 살펴 봅시다.

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

우리는 다음과 같이 사용합니다.

Base URL https://www.example.com/
URI path /blog/news/2022/10
Route /blog/news/2022/10
Query page=2

Base URL에 하위 폴더가 포함됨

Base URL https://www.example.com/ci-blog/일 때 다음 URL을 살펴 봅시다.

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

우리는 다음과 같이 사용합니다.

Base URL https://www.example.com/ci-blog/
URI path /ci-blog/blog/news/2022/10
Route /blog/news/2022/10
Query page=2

index.php 제거

기본적으로 URL은 index.php를 포함합니다.:

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

서버가 URL 다시 쓰기(rewriting)를 지원하는 경우 URL 다시 쓰기로이 파일을 쉽게 제거 할 수 있습니다. 이것은 서버마다 다르게 처리되지만 여기서는 가장 일반적인 두 웹 서버의 예를 들도록 하겠습니다.

Apache Web Server

Apache의 mod_rewrite 확장(extension)이 활성화 되어 있다면 .htaccess 파일에 간단한 규칙을 작성하여 사용합니다. 다음은 지정된 항목을 제외한 모든 항목이 리디렉션되는 “negative” 룰을 적용 예입니다.

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

이 예제에서 기존 디렉토리 및 기존 파일에 대한 요청 이외의 모든 HTTP 요청은 index.php 파일에 대한 요청으로 처리됩니다.

Note

이러한 특정 규칙은 서버 구성에 따라 작동하지 않을 수 있습니다.

Note

액세스가 허용된 자원(image, js, css 등)에 대해서도 위 규칙을 제외해야 합니다.

NGINX

NGINX에서 location 블록을 정의하고 try_files 지시문을 사용하면 위의 Apache 구성과 동일한 효과를 얻을 수 있습니다.

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

먼저 URI와 일치하는 파일 또는 디렉토리(루트 및 별칭 지시문 설정에서 각 파일의 전체 경로 구성)를 찾은 후, 인수와 함께 요청을 index.php 파일로 보냅니다.