mirror of
https://github.com/docsifyjs/docsify.git
synced 2025-12-08 19:55:52 +00:00
add notes on "hash" vs "history" routing in the config docs
This commit is contained in:
parent
ef6905b53a
commit
3feebc0be6
@ -659,6 +659,8 @@ window.$docsify = {
|
||||
|
||||
## routerMode
|
||||
|
||||
Configure the URL format that the paths of your site will use.
|
||||
|
||||
- Type: `String`
|
||||
- Default: `'hash'`
|
||||
|
||||
@ -668,6 +670,43 @@ window.$docsify = {
|
||||
};
|
||||
```
|
||||
|
||||
For statically-deployed sites (f.e. on GitHub Pages) hash-based routing is
|
||||
simpler to set up. For websites that can re-write URLs, the history-based format
|
||||
is better (especially for search-engine optimization, hash-based routing is not
|
||||
so search-engine friendly)
|
||||
|
||||
Hash-based routing means all URL paths will be prefixed with `/#/` in the
|
||||
address bar. This is a trick that allows the site to load `/index.html`, then it
|
||||
uses the path that follows the `#` to determine what markdown files to load. For
|
||||
example, a complete hash-based URL may look like this:
|
||||
`https://example.com/#/path/to/page`. The browser will actually load
|
||||
`https://example.com` (assuming your static server serves
|
||||
`index.html` by default, as most do), and then the Docsify JavaScript code will
|
||||
look at the `/#/...` and determine the markdown file to load and render.
|
||||
Additionally, when clicking on a link, the Docsify router will change the
|
||||
content after the hash dynamically. The value of `location.pathname` will still be
|
||||
`/` no matter what. The parts of a hash path are _not_ sent to the server when
|
||||
visiting such a URL in a browser.
|
||||
|
||||
On the other hand, history-based routing means the Docsify JavaScript will use
|
||||
the [History API](https://developer.mozilla.org/en-US/docs/Web/API/History_API)
|
||||
to dynamically change the URL without using a `#`. This means that all URLs will
|
||||
be considered "real" by search engines, and the full path will be sent to the
|
||||
server when visiting the URL in your browser. For example, a URL may look like
|
||||
`https://example.com/path/to/page`. The browser will try to load that full URL
|
||||
directly from the server, not just `https://example.com`. The upside of this is
|
||||
that these types of URLs are much more friendly for search engines, and can be
|
||||
indexed (yay!). The downside, however, is that your server, or the place where
|
||||
you host your site files, has to be able to handle these URLs. Various static
|
||||
website hosting services allow "rewrite rules" to be configured, such that a
|
||||
server can be configured to always send back `/index.html` no matter what path
|
||||
is visited. The value of `location.pathname` will show `/path/to/page`, because
|
||||
it was actually sent to the server.
|
||||
|
||||
TLDR: start with `hash` routing (the default). If you feel adventurous, learn
|
||||
how to configure a server, then switch to `history` mode for better experience
|
||||
without the `#` in the URL and SEO optimization.
|
||||
|
||||
## routes
|
||||
|
||||
- Type: `Object`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user