CodeIgniter URL

기본적으로 CodeIgniter의 URL은 검색 엔진과 인간 친화적으로 설계되었습니다. 동적 시스템과 동의어인 URL에 대한 표준 “쿼리 문자열” 접근 방식을 사용하는 대신 CodeIgniter는 segment-based 접근 방식을 사용합니다.

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

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

URI LibraryURL Helper에는 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 경로

/블로그/뉴스/2022/10

라우트 경로

/블로그/뉴스/2022/10

기본 URL에 상대적인 URI 경로입니다. URI string이라고도 합니다.

쿼리

페이지=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

라우트 경로

/블로그/뉴스/2022/10

기본 URL에 상대적인 URI 경로입니다. URI string이라고도 합니다.

쿼리

페이지=2

URI 보안

Added in version 4.4.7.

중요

v4.4.7 이전 버전에서 업그레이드하는 사용자는 이 기능을 사용하려면 app/Config/App.php에 다음을 추가해야 합니다.

public string $permittedURIChars = 'a-z 0-9~%.:_\-';

CodeIgniter는 악성 데이터가 애플리케이션에 전달될 가능성을 최소화하기 위해 URI 문자열(경로 경로)에 허용되는 문자를 상당히 제한합니다. URI에는 다음만 포함될 수 있습니다.

  • 영숫자 텍스트(라틴 문자만)

  • 물결표: ~

  • 백분율 기호: %

  • 기간: .

  • 콜론: :

  • 밑줄: _

  • 대시: -

  • 공백: `` ``

참고

이 확인은 Router에 의해 수행됩니다. 라우터는 SiteURI 클래스가 보유한 URL 인코딩 값을 가져와 디코딩한 다음 허용되지 않는 문자열이 포함되어 있지 않은지 확인합니다.

허용되는 문자 추가

허용되는 문자는 Config\App::$permittedURIChars로 변경할 수 있습니다.

URI 경로에 유니코드를 사용하려면 해당 문자를 사용할 수 있도록 수정하세요. 예를 들어 Bengali를 사용하려면 app/Config/App.php에 다음 값을 설정해야 합니다.

public string $permittedURIChars = 'a-z 0-9~%.:_\-\x{0980}-\x{09ff}';

유니코드 범위의 전체 목록은 Wikipedia의 Unicode block에서 찾을 수 있습니다.

index.php 파일 제거

Apache 웹 서버를 사용하는 경우 기본적으로 URL에 index.php 파일이 필요합니다.

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

서버가 URL 재작성을 지원하는 경우 URL 재작성을 통해 이 파일을 쉽게 제거할 수 있습니다. 이는 서버마다 다르게 처리되지만 여기서는 가장 일반적인 두 가지 웹 서버에 대한 예를 보여 드리겠습니다.

아파치 웹 서버

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와 일치하는 파일 또는 디렉터리를 찾은 다음(루트 및 별칭 지시문의 설정에서 각 파일의 전체 경로를 구성) 인수와 함께 index.php 파일에 요청을 보냅니다.