# Custom 404 page - existing plugins?

**URL:** https://meta.discourse.org/t/custom-404-page-existing-plugins/87441
**Category:** Support
**Created:** [5월 14, 2018, 2:48오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441 "2018-05-14T14:48:07Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Bas](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bas/32/294929_2.png) [@Bas](https://meta.discourse.org/u/Bas)
#### Post date: [5월 14, 2018, 2:48오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/1 "2018-05-14T14:48:07Z")

</div>

[It seems](https://meta.discourse.org/t/how-about-a-custom-404/27847/3) that you need to develop a plugin to customize the 404 page.

Does anyone have an example of a plug-in that does that?

We’d love to (radically) change the 404 page, would be a shame if we’d develop a plugin if other have done so before 🙂

---

<div class="post-metadata">

### Author: ![markjackson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markjackson/32/147477_2.png) [@markjackson](https://meta.discourse.org/u/markjackson)
#### Post date: [6월 23, 2019, 8:50오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/2 "2019-06-23T20:50:43Z")

</div>

Bump! I’d like to hide some of the existing widgets and show a New Topic button.

I see that the 404 page title can be set via Settings \> Customize \> Text Content \> [search for current 404 error text that is displayed] but more options would be nice!

---

<div class="post-metadata">

### Author: ![julienb](https://avatars.discourse-cdn.com/v4/letter/j/94ad74/32.png) [@julienb](https://meta.discourse.org/u/julienb)
#### Post date: [10월 17, 2019, 12:33오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/3 "2019-10-17T12:33:23Z")

</div>

안녕하세요,

IPB에서 Discourse로 이관하면서 404 페이지를 개인화하고 싶습니다.  
텍스트가 포함된 간단한 페이지를 만들고 싶습니다.

가장 좋은 방법은 무엇인가요?

감사합니다

---

<div class="post-metadata">

### Author: ![zcuric](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zcuric/32/292837_2.png) [@zcuric](https://meta.discourse.org/u/zcuric)
#### Post date: [3월 12, 2020, 2:21오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/4 "2020-03-12T14:21:24Z")

</div>

혹시 이 문제를 해결하신 분이 계신가요? 404 템플릿은 JS가 아니라 Ruby에서 처리되는데, 이게 좀 이상합니다.  
커스텀 404 hbs 템플릿을 만들어 테마를 통해 스타일링하는 방법이 있을까요?

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [5월 25, 2020, 7:51오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/5 "2020-05-25T07:51:24Z")

</div>

404 페이지를 커스터마이즈하는 방법도 찾고 있습니다. 현재 겪고 있는 문제는 포럼의 일부 섹션이 비공개라는 점입니다. 채팅이나 다른 게시물에서 해당 섹션을 링크했는데, 사용자가 포럼에 로그인되어 있지 않으면 마치 존재하지 않는 페이지를 링크한 것처럼 보입니다. 일반적으로 사용자는 깊이 생각하지 않는 경향이 있어, "_Oops! That page doesn’t exist or is private_"라는 메시지 중 “or is private” 부분은 무시하고, 단순히 페이지가 존재하지 않는다고 생각하는 경우가 많습니다.

제가 원하는 동작은 다음과 같습니다: 사용자가 로그인되어 있지 않고 페이지가 `404` 상태라면, 404 페이지 위에 가입 또는 로그인 양식을 표시합니다(검색 엔진을 혼란스럽게 할 수 있으므로 리다이렉트는 하지 않습니다). 사용자가 로그인되어 있지만 접근 권한이 없는 경우, 기존과 같은 일반 404 페이지를 표시하면 됩니다.

이렇게 구현하는 방법이 있는지 아는 분이 계신가요?

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 25, 2020, 5:16오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/6 "2020-05-25T17:16:26Z")

</div>

사이트 설정에서 향상된 404 페이지를 활성화하세요. 단, 이 페이지는 기밀 정보가 누출될 수 있습니다.

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [5월 25, 2020, 8:22오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/7 "2020-05-25T20:22:26Z")

</div>

페이지가 다르게 보여야 하나요? 두 사이트에서 해당 기능을 시도해 보았지만, 여전히 같은 오류 페이지가 표시됩니다:

 ![image](https://global.discourse-cdn.com/meta/original/3X/c/e/ce155bfcc86af8cb09587374e394c2eee4a1340a.png)

캐시 문제만은 아닌지 확인하기 위해 그중 한 사이트의 포럼을 다시 구축해 보았고, 비공개 주제와 존재하지 않는 페이지에 대해서도 테스트해 보았습니다.

제 설정은 다음과 같습니다:

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/8/88685c4398712970ffabb59b5a1e0e4acc378a99.png)

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 25, 2020, 9:26오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/8 "2020-05-25T21:26:45Z")

</div>

어떤 "섹션"으로 링크를 걸고 있나요? 특정 주제로 링크를 걸고 있나요?

---

<div class="post-metadata">

### Author: ![j127](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j127/32/79093_2.png) [@j127](https://meta.discourse.org/u/j127)
#### Post date: [5월 26, 2020, 12:25오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/9 "2020-05-26T00:25:51Z")

</div>

네, 로그인하지 않은 상태에서 특정 주제, 게시물, 카테고리 및 존재하지 않는 페이지를 불러오는 것을 시도해 보았는데, 동일한 페이지가 표시됩니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 27, 2020, 3:56오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/10 "2020-05-27T03:56:08Z")

</div>

한번 보겠습니다. 제 자체 호스팅 Discourse의 **Staff** 카테고리에 있는 주제입니다:

`https://discourse.codinghorror.com/t/test-topic-for-close-states/3516`

`detailed 404`가 false(기본값)로 설정된 상태로 로드하면

> Oops! That page doesn’t exist or is private.

이 메시지가 표시됩니다.

이것은 예상대로입니다. 하지만 `detailed 404`를 true로 변경해도 같은 메시지가 나타납니다.. 여기에서 회귀(regression)가 발생한 건가요, 아니면 @sam 이 기능을 오해하고 있는 건가요? 🤔

혹시 모르니 재빌드도 해봤지만 결과는 동일합니다. `detailed 404`가 활성화되어 있으면

> Sorry, you don’t have access to this topic

메시지가 표시될 것으로 예상했는데 말이죠.

---

<div class="post-metadata">

### Author: ![itsbhanusharma](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/itsbhanusharma/32/180717_2.png) [@itsbhanusharma](https://meta.discourse.org/u/itsbhanusharma)
#### Post date: [5월 27, 2020, 4:20오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/11 "2020-05-27T04:20:24Z")

</div>

보시는 메시지는 정확하다고 생각합니다. 결국 staff는 비공개 카테고리이기 때문이죠. 하지만 제가 틀렸을 수도 있습니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 27, 2020, 4:40오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/12 "2020-05-27T04:40:03Z")

</div>

아니요, 여기서 `detailed 404`를 통해 의도적으로 정보를 누출하는 것입니다. 해당 토픽은 실제로 존재하지만, 어떤 이유로 인해 접근할 수 없는 상태입니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [5월 27, 2020, 7:06오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/13 "2020-05-27T07:06:26Z")

</div>

@dan 님이 이 기능을 작업하신 것 같은데, Dan님, 지금 무슨 일이 일어나고 있는지 혹시 아이디어가 있으신가요?

---

<div class="post-metadata">

### Author: ![dan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dan/32/101549_2.png) [@dan](https://meta.discourse.org/u/dan)
#### Post date: [5월 27, 2020, 7:23오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/15 "2020-05-27T07:23:17Z")

</div>

상세한 404 오류 메시지는 사용자가 그룹을 볼 수 있는 조치를 취할 수 있는 경우에만 표시됩니다. 일반적으로 이는 그룹에 가입하는 것(자유 가입 또는 가입 요청 보내기)을 의미합니다.

이 경우 사용자는 `@staff` 그룹에 가입하거나 가입 요청을 보낼 수 없으므로, 상세 오류 페이지가 표시되지 않는 것입니다. "상세 404"가 활성화된 경우 “else” 케이스를 추가하여 다음을 표시하도록 하는 것이 좋다고 생각합니다.

> # 아! 이 페이지는 비공개입니다.

대신에

> # 아! 이 페이지는 존재하지 않거나 비공개입니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 27, 2020, 10:02오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/16 "2020-05-27T10:02:45Z")

</div>

네, 여기서는 else 절을 사용하는 것이 더 좋습니다.

---

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [5월 27, 2020, 3:03오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/17 "2020-05-27T15:03:50Z")

</div>

404 페이지의 Ember 버전에는 “뒤로” 버튼(window.history.back())을 추가하는 것도 고려해 보세요. 이 경우 사용자가 취할 수 있는 유일한 합리적인 행동이 바로 그 버튼이기 때문입니다.

---

<div class="post-metadata">

### Author: ![dan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/dan/32/101549_2.png) [@dan](https://meta.discourse.org/u/dan)
#### Post date: [5월 29, 2020, 9:18오전 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/18 "2020-05-29T09:18:10Z")

</div>

이미 구현되었습니다. 결국 서버는 이미 403을 반환하고 있었고, 오류 메시지만 문제였네요.

> <https://github.com/discourse/discourse/pull/9894>

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 29, 2020, 6:05오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/19 "2020-05-29T18:05:19Z")

</div>

훌륭네요. 셀프호스팅 인스턴스를 업데이트했고 이제 스태프 토픽

`https://discourse.codinghorror.com/t/test-topic-for-close-states/3516`

이 올바르게

> 오! 이 페이지는 비공개입니다.

를 반환합니다. `detailed 404`가 활성화된 상태에서 인코그니토 모드로 방문했을 때요. 감사합니다! 👏

---

<div class="post-metadata">

### Author: ![michaeld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/michaeld/32/1594_2.png) [@michaeld](https://meta.discourse.org/u/michaeld)
#### Post date: [5월 29, 2020, 6:30오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/20 "2020-05-29T18:30:23Z")

</div>

> [@codinghorror](#):
>
> 정상적으로 반환됩니다
> 
> > 아! 그 페이지는 비공개입니다.

자주 받는 요청 중 하나는, 로그인하면 해당 주제가 접근 가능해질 수 있으므로 그런 경우 해당 페이지에 로그인 버튼을 표시해 달라는 것입니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [5월 29, 2020, 10:20오후 UTC](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441/21 "2020-05-29T22:20:15Z")

</div>

저는 그게 훌륭하고 합리적인 요청이라고 생각합니다. @eviltrout님, 리스크가 크지 않다면 릴리스 전에 할당해 주실 수 있을까요?

[다음 페이지](https://meta.discourse.org/t/custom-404-page-existing-plugins/87441.md?page=2)
