Merge pull request #3556 from willnorris/permalinks
Merge pull request 3556
This commit is contained in:
		
						commit
						3c9e43eb36
					
				|  | @ -79,7 +79,7 @@ front matter of a page or post. | |||
|         <p> | ||||
| 
 | ||||
|           If you need your processed blog post URLs to be something other than | ||||
|           the default <code>/year/month/day/title.html</code> then you can set | ||||
|           the site-wide style (default <code>/year/month/day/title.html</code>), then you can set | ||||
|           this variable and it will be used as the final URL. | ||||
| 
 | ||||
|         </p> | ||||
|  |  | |||
|  | @ -103,15 +103,8 @@ permalink is defined as `/:categories/:year/:month/:day/:title.html`. | |||
| 
 | ||||
| ## Built-in permalink styles | ||||
| 
 | ||||
| **Note:** these may only apply to posts, not to pages, collections or | ||||
| static files. For example, `pretty` changes page permalinks from | ||||
| `/:path/:basename:output_ext` to `/:page/:basename/` if the page is HTML, | ||||
| thus "prettyifying" the page permalink. The `date`, `none`, and all custom | ||||
| values do not apply to pages. No permalink style applies to static files, | ||||
| and collections have their own means of specifying permalinks. It's all | ||||
| rather confusing but check out [Issue #2691](https://github.com/jekyll/jekyll/issues/2691) | ||||
| for more background on the subject, and submit a PR if you're adventurous | ||||
| enough to fix it all! | ||||
| While you can specify a custom permalink style using [template variables](#template-variables), | ||||
| Jekyll also provides the following built-in styles for convenience. | ||||
| 
 | ||||
| <div class="mobile-side-scroller"> | ||||
| <table> | ||||
|  | @ -158,6 +151,33 @@ enough to fix it all! | |||
| </table> | ||||
| </div> | ||||
| 
 | ||||
| ## Pages and collections | ||||
| 
 | ||||
| <div class="note unreleased"> | ||||
|   <h5>Support for improved page and collection permalinks is currently unreleased.</h5> | ||||
|   <p> | ||||
|     In order to use this feature, <a href="/docs/installation/#pre-releases"> | ||||
|     install the latest development version of Jekyll</a>. | ||||
|   </p> | ||||
| </div> | ||||
| 
 | ||||
| The `permalink` configuration setting specifies the permalink style used for | ||||
| posts.  Pages and collections each have their own default permalink style; the | ||||
| default style for pages is `/:path/:basename` and the default for collections is | ||||
| `/:collection/:path`. | ||||
| 
 | ||||
| These styles are modified to match the suffix style specified in the post | ||||
| permalink setting.  For example, a permalink style of `pretty`, which contains a | ||||
| trailing slash, will update page permalinks to also contain a trailing slash: | ||||
| `/:path/:basename/`.  A permalink style of `date`, which contains a trailing | ||||
| file extension, will update page permalinks to also contain a file extension: | ||||
| `/:path/:basename:output_ext`.  The same is true for any custom permalink style. | ||||
| 
 | ||||
| The permalink for an individual page or collection document can always be | ||||
| overridden in the [YAML Front Matter](../frontmatter/) for the page or document. | ||||
| Additionally, permalinks for a given collection can be customized [in the | ||||
| collections configuration](../collections/). | ||||
| 
 | ||||
| ## Permalink style examples | ||||
| 
 | ||||
| Given a post named: `/2009-04-29-slap-chop.md` | ||||
|  | @ -197,12 +217,65 @@ Given a post named: `/2009-04-29-slap-chop.md` | |||
|     </tr> | ||||
|     <tr> | ||||
|       <td> | ||||
|         <p><code>/blog/:year/:month/:day/:title</code></p> | ||||
|         <p><code>/blog/:year/:month/:day/:title/</code></p> | ||||
|       </td> | ||||
|       <td> | ||||
|         <p><code>/blog/2009/04/29/slap-chop/index.html</code></p> | ||||
|         <p><code>/blog/2009/04/29/slap-chop/</code></p> | ||||
|       </td> | ||||
|     </tr> | ||||
|     <tr> | ||||
|       <td> | ||||
|         <p><code>/:year/:month/:title</code></p> | ||||
|         <p>See <a href="#extensionless-permalinks">extensionless permalinks</a> for details.</p> | ||||
|       </td> | ||||
|       <td> | ||||
|         <p><code>/2009/04/slap-chop</code></p> | ||||
|       </td> | ||||
|     </tr> | ||||
|   </tbody> | ||||
| </table> | ||||
| </div> | ||||
| 
 | ||||
| ## Extensionless permalinks | ||||
| 
 | ||||
| <div class="note unreleased"> | ||||
|   <h5>Support for extensionless permalink is currently unreleased.</h5> | ||||
|   <p> | ||||
|     In order to use this feature, <a href="/docs/installation/#pre-releases"> | ||||
|     install the latest development version of Jekyll</a>. | ||||
|   </p> | ||||
| </div> | ||||
| 
 | ||||
| Jekyll supports permalinks that contain neither a trailing slash nor a file | ||||
| extension, but this requires additional support from the web server to properly | ||||
| serve.  When using extensionless permalinks, output files written to disk will | ||||
| still have the proper file extension (typically `.html`), so the web server | ||||
| must be able to map requests without file extensions to these files. | ||||
| 
 | ||||
| Both [GitHub Pages](../github-pages/) and the Jekyll's built-in WEBrick server | ||||
| handle these requests properly without any additional work. | ||||
| 
 | ||||
| ### Apache | ||||
| 
 | ||||
| The Apache web server has very extensive support for content negotiation and can | ||||
| handle extensionless URLs by setting the [multiviews][] option in your | ||||
| `httpd.conf` or `.htaccess` file: | ||||
| 
 | ||||
| [multiviews]: https://httpd.apache.org/docs/current/content-negotiation.html#multiviews | ||||
| 
 | ||||
| {% highlight apache %} | ||||
| Options +MultiViews | ||||
| {% endhighlight %} | ||||
| 
 | ||||
| ### Nginx | ||||
| 
 | ||||
| The [try_files][] directive allows you to specify a list of files to search for | ||||
| to process a request.  The following configuration will instruct nginx to search | ||||
| for a file with an `.html` extension if an exact match for the requested URI is | ||||
| not found. | ||||
| 
 | ||||
| [try_files]: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files | ||||
| 
 | ||||
| {% highlight nginx %} | ||||
| try_files $uri $uri.html $uri/ =404; | ||||
| {% endhighlight %} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue