URL 생성


URL 생성은 thinkfacadeRoute::buildUrl() 메서드를 사용하여 수행할 수 있습니다.

이 메소드는 thinkrouteUrl 객체 인스턴스를 반환합니다. __toString 메소드를 사용하므로 라우팅 주소를 직접 출력할 수 있습니다.

echo \think\facade\Route::buildUrl();

클라이언트에 데이터가 반환되면 먼저 문자열 형식으로 캐스팅한 후 반환할 수 있습니다.

$url = (string) \think\facade\Route::buildUrl();

라우팅 식별자 사용

주소 표현의 정의는 라우팅 주소 방법에 따라 다릅니다. 매개변수는 두 번째 매개변수를 통해 별도로 전달됩니다. 다음과 같이 라우팅 규칙을 정의한다고 가정합니다.

Route::rule('blog/:id','index/blog/read');

라우팅 식별자를 지정하지 않은 경우 라우팅 주소를 직접 사용하여 URL 주소를 생성할 수 있습니다.

Route::buildUrl('index/blog/read', ['id' => 5, 'name' => 'thinkphp']);

라우팅 식별자가 지정된 경우

Route::rule('blog/:id','index/blog/read')->name('blog_read');

그런 다음 라우팅 식별자를 사용하여 URL 주소를 생성해야 합니다

Route::buildUrl('blog_read', ['id' => 5, 'name' => 'thinkphp']);

위의 방법은 다음 URL 주소를 생성합니다.

/index.php/blog/5/name/thinkphp.html

환경이 REWRITE를 지원하는 경우 생성된 URL 주소는 다음과 같습니다.

/blog/5/name/thinkphp.html

'url_common_param'=>true

로 구성하면 생성된 URL 주소는 다음과 같습니다.

/index.php/blog/5.html?name=thinkphp

라우팅 규칙에 없는 변수는 일반 URL 매개변수를 직접 사용합니다.

URL 주소 생성은 경로의 유효성을 감지하지 않고, 주어진 라우팅 주소와 매개변수를 기반으로 적격한 라우팅 규칙만 생성한다는 점에 유의해야 합니다.

라우팅 주소 사용

라우팅 주소를 직접 사용하여 URL을 생성할 수도 있습니다. 예:

라우팅 규칙을 다음과 같이 정의합니다.

Route::get('blog/:id' , 'blog/read');

라우팅 규칙을 사용하면 다음 방법을 사용하여 URL 주소를 직접 생성할 수 있습니다. :

Route::buildUrl('/blog/5');

그러면 자동으로 생성된 URL 주소는 다음과 같습니다.

/index.php/blog/5.html

URL 접미사

다음과 같이 설정하면 시스템은 자동으로 url_html_suffix 구성 매개변수를 URL 접미사(기본값은 html)로 읽습니다.

그러면 자동으로 생성된 URL 주소는 다음과 같습니다.

'url_html_suffix'   => 'shtml'

여러 URL 접미사 지원

/index.php/blog/5.shtml

을 설정하면 첫 번째 접미사가 URL 주소를 생성하는 데 사용되므로 자동으로 생성된 URL 주소는 여전히

'url_html_suffix'   => 'html|shtml'

입니다. URL 접미사를 생성하려면 다음을 사용할 수 있습니다.

/index.php/blog/5.html

도메인 이름 생성

다중 도메인 이름 배포를 채택하거나 URL을 생성하려는 경우 기본 생성된 URL 주소에는 도메인 이름이 없습니다. 네 번째 매개변수를 입력하세요. 이 매개변수는 두 가지 용도로 사용됩니다.

자동으로 도메인 이름 생성


Route::buildUrl('blog/read', ['id'=>5])->suffix('shtml');

네 번째 매개변수가 true로 전달되면 도메인 이름이 자동으로 생성된다는 뜻입니다. url_domain_deploy를 활성화하면 현재 URL 도메인 이름과 일치하는 도메인 이름이 자동으로 식별됩니다.

예를 들어 다음과 같이 도메인 이름 라우팅 정보를 등록했습니다.

Route::buildUrl('index/blog/read',  ['id'=>5])
    ->suffix('shtml')
    ->domain(true);

그러면 위의 URL 주소는 다음과 같이 생성됩니다.

Route::domain('blog','index/blog');

도메인 이름을 지정하세요

필요한 도메인 이름을 명시적으로 전달할 수도 있습니다. 주소를 생성하려면 예를 들어

http://blog.thinkphp.cn/read/id/5.shtml

또는 전체 도메인 이름을 전달

Route::buildUrl('blog/read', ['id'=>5])->domain('blog');

생성된 URL 주소는 다음과 같습니다.

Route::buildUrl('index/blog/read', ['id'=>5])->domain('blog.thinkphp.cn');

첫 번째 매개변수에 도메인 이름을 직접 전달할 수도 있습니다. 예:

http://blog.thinkphp.cn/read/id/5.shtml

앵커 포인트 생성

URL 앵커 생성 지원 클릭하면 URL 주소 매개변수에서 직접 사용할 수 있습니다.

Route::buildUrl('index/blog/read@blog',  ['id'=>5]);
Route::buildUrl('index/blog/read@blog.thinkphp.cn',  ['id'=>5]);

앵커 포인트와 도메인 이름을 함께 사용할 때는 앵커 포인트가 앞에 있고 도메인 이름이 뒤에 있다는 점에 주의하세요.

생성된 URL 주소는 다음과 같습니다.

Route::buildUrl('index/blog/read#anchor@blog', ['id'=>5]);

+ 항목 파일

때때로 우리가 생성하는 URL 주소에 index.php를 추가하거나 index.php를 제거해야 할 수도 있습니다. 대부분의 경우 시스템이 자동으로 판단합니다. 발견된 경우 자동으로 생성된 주소에 문제가 있는 경우 다음 방법을 사용할 수 있습니다.

http://blog.thinkphp.cn/read/id/5.html#anchor

보조 기능

시스템은 동일한 기능을 완료하기 위해 URL 보조 기능을 제공합니다. 예:

Route::buildUrl('index/blog/read', ['id'=>5])->root('/index.php');