facebook / facebook/docusaurus

Unability to link to an internal non-SPA link

Open
#3,309 27 comments 7 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
66.2k
Forks
10k
Avg merge
1d 3h
Merged PRs (30d)
52

Description

## 🐛 Bug Report

Related to https://github.com/facebook/docusaurus/issues/3303#issuecomment-676541070

Imagine you have `/static/javadoc/index.html`

You should be able to link to this page that is not managed by Docusaurus, using:

```
Javadoc
```

or

```
[javadoc](/javadoc)
```

Yet, the link uses `history.push()` as it thinks it's an SPA internal link, and we end up with the 404 as no SPA route is found.

It works after a refresh though, or if we use an URL with the http/https protocol.

---

Not sure how to solve this problem,

Maybe we should read the routes file directly on link, and when we press, only use `history.push()` if the link is a known internal SPA link, else fallback to a regular non-SPA navigation?

I don't think there is a std way to provide additional link infos in Markdown, nor if MDX supports that. Another option would be to use a special protocol so that we force the link to consider it as a non-SPA link:

```
[javadoc](external:///javadoc)
```

Another solution would be to provide a remark plugin so that user can tell which URLs are to be considered as external. It may be overwhelming for a site user to write a remark plugin, so we could just ship a default one in MDX loader, that would read a list of paths to consider external in site config? Inspiration => https://github.com/remarkjs/remark-external-links

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.