라이믹스/라우터: 두 판 사이의 차이

Gaon12 (토론 / 기여)
시작
 
Gaon12 (토론 / 기여)
내용 보강(개발 코드쪽)
 
1번째 줄: 1번째 줄:
== 개요==
== 개요==
[[라이믹스]] [[라이믹스/릴리즈_노트/2.0.0|2.0 버전]]에 추가된 기능으로, URL을 짧고 간결하게 만들어주는 역할을 한다. 예를 들어, 일반적인 URL 구조가 <code>https://example.com/index.php?mid=board&document_srl=123`</code>라면, 라우터 기능을 통해 <code>https://example.com/board/123</code>와 같이 단순화할 수 있다. 이는 사용자가 URL을 쉽게 기억하고 입력할 수 있게 해준다.
[[라이믹스]] [[라이믹스/릴리즈_노트/2.0.0|2.0 버전]]에 추가된 기능으로, URL을 짧고 간결하게 만들어주는 역할을 한다. 예를 들어, 일반적인 URL 구조가 <nowiki><code>https://example.com/index.php?mid=board&document_srl=123</code></nowiki>라면, 라우터 기능을 통해 <nowiki><code>https://example.com/board/123</code></nowiki>와 같이 단순화할 수 있다. 이는 사용자가 URL을 쉽게 기억하고 입력할 수 있게 해준다.


== 장점 ==
== 장점 ==
=== 간결한 URL===
=== 간결한 URL ===
복잡한 쿼리 스트링을 단순한 경로로 변환하여 가독성이 높다. 예를 들어 글 작성 페이지는 <code>https://example.com/notice/write</code> 형식으로 구성되어 있어, 기존 방식인 <code>https://example.com/index.php?mid=notice&act=dispBoardWrite</code>에 비해 어떤 <code>mid</code>, <code>act</code>인지 한 눈에 이해하기 쉽다.
복잡한 쿼리 스트링을 단순한 경로로 변환하여 가독성이 높다. 예를 들어 글 작성 페이지는 <nowiki><code>https://example.com/notice/write</code></nowiki> 형식으로 구성되어 있어, 기존 방식인 <nowiki><code>https://example.com/index.php?mid=notice&act=dispBoardWrite</code></nowiki>에 비해 어떤 <nowiki><code>mid</code></nowiki>, <nowiki><code>act</code></nowiki>인지 한눈에 이해하기 쉽다.


=== SEO 향상 ===
=== SEO 향상 ===
13번째 줄: 13번째 줄:


=== 모듈화된 관리 ===
=== 모듈화된 관리 ===
각 모듈이 자신만의 URL 패턴을 정의할 수 있어, 다양한 기능을 독립적으로 관리할 수 있습니다[3].
각 모듈이 자신만의 URL 패턴을 정의할 수 있어, 다양한 기능을 독립적으로 관리할 수 있다.


== 사용법 ==
== 사용법 ==
=== 사이트 적용 ===
=== 사이트 적용 ===
사이트 내에 적용하기 위해서는 관리자 페이지(<code>/admin</code>)에 들어간 후, '''설정 →시스템 설정 → 고급 설정'''에서, <code>짧은 주소 사용</code> 기능을 <code>모든 주소 형태를 사용</code>으로 변경한다.
사이트 내에 적용하기 위해서는 관리자 페이지(<nowiki><code>/admin</code></nowiki>)에 들어간 후, '''설정 → 시스템 설정 → 고급 설정'''에서, <nowiki><code>짧은 주소 사용</code></nowiki> 기능을 <nowiki><code>모든 주소 형태를 사용</code></nowiki>으로 변경한다.


이때 서드파티 모듈이나 애드온 등에서 지원하지 않는 경우에는 오류가 발생할 수 있다.<ref>코어 모듈들은 모두 지원함.</ref>
이때 서드파티 모듈이나 애드온 등에서 지원하지 않는 경우에는 오류가 발생할 수 있다.<ref>코어 모듈들은 모두 지원함.</ref>


=== nginx 적용 ===
=== nginx 적용 ===
아파치의 경우, <code>.htaccess</code>를 사용하므로 별도로 작업할 것은 없지만, nginx의 경우에는 서버에 적용해야 한다. 우분투 기준 아래의 명령어를 입력한다.
아파치의 경우, <nowiki><code>.htaccess</code></nowiki>를 사용하므로 별도로 작업할 것은 없지만, nginx의 경우에는 서버에 적용해야 한다. 우분투 기준 아래의 명령어를 입력한다.


<syntaxhighlight lang='sh'>
<syntaxhighlight lang='sh'>
30번째 줄: 30번째 줄:
더 자세한 내용은 [https://github.com/rhymix/rhymix-docs/blob/master/ko/introduction/nginx.md 깃허브 문서]를 확인하기 바랍니다.
더 자세한 내용은 [https://github.com/rhymix/rhymix-docs/blob/master/ko/introduction/nginx.md 깃허브 문서]를 확인하기 바랍니다.


=== 모듈 ===
== 개발자 가이드 ==
라우터 기능을 사용하기 위해서는 `module.xml` 파일에서 `route` 속성을 정의해야 한다. 예를 들어, 게시판 모듈에서 특정 글을 삭제하는 URL을 정의하려면 다음과 같이 설정할 수 있다.
=== 모듈에서 라우터 사용 ===
라우터 기능을 사용하기 위해서는 <nowiki>`module.xml`</nowiki> 파일에서 <nowiki>`route`</nowiki> 속성을 정의해야 한다. 예를 들어, 게시판 모듈에서 특정 글을 삭제하는 URL을 정의하려면 다음과 같이 설정할 수 있다.


<syntaxhighlight lang='xml'>
<syntaxhighlight lang='xml'>
37번째 줄: 38번째 줄:
</syntaxhighlight>
</syntaxhighlight>


이렇게 하면 <code>/board/123/delete</code>와 같은 URL을 사용할 수 있다. 이외에도 다양한 변수 타입과 우선순위를 지정하여 URL을 관리할 수 있다.
이렇게 하면 <nowiki><code>/board/123/delete</code></nowiki>와 같은 URL을 사용할 수 있다. 또한, <nowiki>`<route>`</nowiki> 태그를 사용하면 하나의 액션에 여러 개의 짧은주소를 정의할 수 있다.
 
<syntaxhighlight lang='xml'>
<action name="dispBoardWrite" type="view">
    <route route="write" />
    <route route="$document_srl/edit" />
</action>
</syntaxhighlight>
 
위 설정을 적용하면 <nowiki><code>/notice/write</code></nowiki>와 <nowiki><code>/notice/123/edit</code></nowiki>와 같은 URL을 사용할 수 있다.
 
=== 우선순위 설정 ===
여러 개의 짧은주소가 동일한 변수들을 사용하여 충돌할 경우, <nowiki>`priority`</nowiki> 속성을 사용하여 우선순위를 지정할 수 있다.
 
<syntaxhighlight lang='xml'>
<action name="dispBoardExample" type="view">
    <route route="downtown/$baby" priority="20" />
    <route route="hasta/la-vista/$baby" priority="10" />
</action>
</syntaxhighlight>
 
우선순위가 높은 라우트가 먼저 적용된다.
 
=== 404 에러 처리 ===
라우트가 정의되지 않은 URL 요청이 들어오면, 모듈에서 404 에러 핸들러를 지정하여 사용자 친화적인 에러 페이지를 제공할 수 있다.
 
<syntaxhighlight lang='xml'>
<action name="dispBoardNotFound" type="view" error-handlers="404" />
</syntaxhighlight>
 
이렇게 설정하면 잘못된 URL이 요청될 경우 <nowiki>`dispBoardNotFound`</nowiki> 메소드가 실행된다.
 
=== 전역 짧은주소 사용 ===
mid 없이도 작동하는 기능(예: 통합검색)의 경우, <nowiki>`global-route="true"`</nowiki> 속성을 추가하여 전역 라우트를 설정할 수 있다.
 
<syntaxhighlight lang='xml'>
<action name="IS" type="view" global-route="true">
    <route route="search" />
</action>
</syntaxhighlight>
 
이를 통해 <nowiki><code>https://example.com/search</code></nowiki>와 같은 URL이 사용 가능하다. 다만, 전역 라우트는 다른 모듈과 충돌할 위험이 있으므로 신중하게 사용해야 한다.


== 문서 ==
== 문서 ==

2025년 3월 11일 (화) 19:39 기준 최신판

개요[편집 / 원본 편집]

라이믹스 2.0 버전에 추가된 기능으로, URL을 짧고 간결하게 만들어주는 역할을 한다. 예를 들어, 일반적인 URL 구조가 <code>https://example.com/index.php?mid=board&document_srl=123</code>라면, 라우터 기능을 통해 <code>https://example.com/board/123</code>와 같이 단순화할 수 있다. 이는 사용자가 URL을 쉽게 기억하고 입력할 수 있게 해준다.

장점[편집 / 원본 편집]

간결한 URL[편집 / 원본 편집]

복잡한 쿼리 스트링을 단순한 경로로 변환하여 가독성이 높다. 예를 들어 글 작성 페이지는 <code>https://example.com/notice/write</code> 형식으로 구성되어 있어, 기존 방식인 <code>https://example.com/index.php?mid=notice&act=dispBoardWrite</code>에 비해 어떤 <code>mid</code>, <code>act</code>인지 한눈에 이해하기 쉽다.

SEO 향상[편집 / 원본 편집]

검색 엔진이 URL을 더 쉽게 인덱싱할 수 있어 검색 결과에 긍정적인 영향을 미친다. 간결한 URL은 검색 엔진 입장에서도 이해하기 쉽기 때문에, 더 높은 점수를 얻을 수 있다.

사용자 경험 개선[편집 / 원본 편집]

SEO 향상과 같은 이유로, 사용자가 URL을 쉽게 기억하고 공유할 수 있어 웹사이트의 접근성이 향상된다.

모듈화된 관리[편집 / 원본 편집]

각 모듈이 자신만의 URL 패턴을 정의할 수 있어, 다양한 기능을 독립적으로 관리할 수 있다.

사용법[편집 / 원본 편집]

사이트 적용[편집 / 원본 편집]

사이트 내에 적용하기 위해서는 관리자 페이지(<code>/admin</code>)에 들어간 후, 설정 → 시스템 설정 → 고급 설정에서, <code>짧은 주소 사용</code> 기능을 <code>모든 주소 형태를 사용</code>으로 변경한다.

이때 서드파티 모듈이나 애드온 등에서 지원하지 않는 경우에는 오류가 발생할 수 있다.[1]

nginx 적용[편집 / 원본 편집]

아파치의 경우, <code>.htaccess</code>를 사용하므로 별도로 작업할 것은 없지만, nginx의 경우에는 서버에 적용해야 한다. 우분투 기준 아래의 명령어를 입력한다.

curl https://raw.githubusercontent.com/rhymix/rhymix/master/common/manual/server_config/rhymix-nginx.conf > /etc/nginx/snippets/rhymix.conf

더 자세한 내용은 깃허브 문서를 확인하기 바랍니다.

개발자 가이드[편집 / 원본 편집]

모듈에서 라우터 사용[편집 / 원본 편집]

라우터 기능을 사용하기 위해서는 `module.xml` 파일에서 `route` 속성을 정의해야 한다. 예를 들어, 게시판 모듈에서 특정 글을 삭제하는 URL을 정의하려면 다음과 같이 설정할 수 있다.

<action name="dispBoardDelete" type="view" route="$document_srl/delete" />

이렇게 하면 <code>/board/123/delete</code>와 같은 URL을 사용할 수 있다. 또한, `<route>` 태그를 사용하면 하나의 액션에 여러 개의 짧은주소를 정의할 수 있다.

<action name="dispBoardWrite" type="view">
    <route route="write" />
    <route route="$document_srl/edit" />
</action>

위 설정을 적용하면 <code>/notice/write</code>와 <code>/notice/123/edit</code>와 같은 URL을 사용할 수 있다.

우선순위 설정[편집 / 원본 편집]

여러 개의 짧은주소가 동일한 변수들을 사용하여 충돌할 경우, `priority` 속성을 사용하여 우선순위를 지정할 수 있다.

<action name="dispBoardExample" type="view">
    <route route="downtown/$baby" priority="20" />
    <route route="hasta/la-vista/$baby" priority="10" />
</action>

우선순위가 높은 라우트가 먼저 적용된다.

404 에러 처리[편집 / 원본 편집]

라우트가 정의되지 않은 URL 요청이 들어오면, 모듈에서 404 에러 핸들러를 지정하여 사용자 친화적인 에러 페이지를 제공할 수 있다.

<action name="dispBoardNotFound" type="view" error-handlers="404" />

이렇게 설정하면 잘못된 URL이 요청될 경우 `dispBoardNotFound` 메소드가 실행된다.

전역 짧은주소 사용[편집 / 원본 편집]

mid 없이도 작동하는 기능(예: 통합검색)의 경우, `global-route="true"` 속성을 추가하여 전역 라우트를 설정할 수 있다.

<action name="IS" type="view" global-route="true">
    <route route="search" />
</action>

이를 통해 <code>https://example.com/search</code>와 같은 URL이 사용 가능하다. 다만, 전역 라우트는 다른 모듈과 충돌할 위험이 있으므로 신중하게 사용해야 한다.

문서[편집 / 원본 편집]

자세한 내용은 공식 문서를 확인하기 바랍니다.

각주[편집 / 원본 편집]

  1. 코어 모듈들은 모두 지원함.