Improve SEO by pre-rendering all HTML pages

* Change all internal links to use URLs ending in `/`
* Add the prerender script which uses PhantomJS to pre-render the
  HTML for all possible pages in the system
* Change the build process to incorporate the pre-rendered files
* Update the sitemap script to generate the new URLs
This commit is contained in:
Andrew Miner
2015-03-06 22:31:39 -08:00
parent a9dc4e3a26
commit 6c7274c38c
2121 changed files with 195933 additions and 3118 deletions
@@ -0,0 +1,92 @@
<!DOCTYPE html><html><head><script type="text/javascript" src="//s7.addthis.com/static/r07/menu174.js"></script><script type="text/javascript" src="//s7.addthis.com/static/r07/plugins/layers099.js"></script>
<title>Ender Dust | Crafting Guide for Minecraft | The Ultimate Step-by-Step Tutorial for Making Anything in Minecraft</title>
<meta charset="UTF-8">
<link href="/images/favicon.png" rel="icon" type="image/png">
<link rel="stylesheet" type="text/css" href="/css/main.css">
<link rel="stylesheet" type="text/css" href="/css/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="//s7.addthis.com/static/r07/widget/css/widget020.top.svg.css" media="all"><link rel="stylesheet" type="text/css" href="//s7.addthis.com/static/r07/plugins/layers077.css" media="all"></head>
<body>
<div class="view__feedback" style="left: -250px; "><input name="name" placeholder="name (optional)"><input name="email" placeholder="email (optional)"><label name="comment">Comment:</label><textarea name="comment"></textarea><button name="send" disabled="disabled">send</button><div class="error"><p>Sending failed. Please try again later.</p></div><div class="label"><img src="/images/paper.png"><p>Feedback</p></div></div>
<div class="view__screen"></div>
<div class="content">
<div class="view__header">
<h1><a href="/" class="logo"><img src="/images/workbench_front.png"></a>
<p>Crafting Guide for Minecraft</p>
</h1>
<div class="addthis_sharing_toolbox" data-url="http://localhost:8000/browse/applied_energistics_2/ender_dust" data-title="Ender Dust | Crafting Guide for Minecraft | The Ultimate Step-by-Step Tutorial for Making Anything in Minecraft"><div id="atstbx" class="at-share-tbx-element addthis_32x32_style addthis-smartlayers at4-show"><a class="at-share-btn at-svc-facebook"><span class="at4-icon aticon-facebook" title="Facebook"></span></a><a class="at-share-btn at-svc-twitter"><span class="at4-icon aticon-twitter" title="Twitter"></span></a><a class="at-share-btn at-svc-email"><span class="at4-icon aticon-email" title="Email"></span></a><a class="at-share-btn at-svc-compact"><span class="at4-icon aticon-compact" title="More"></span></a></div></div>
<div class="divider bottom"></div>
<div class="navBar"><a data-page="home" href="/" style="z-index: 104; ">
<p>Home</p>
<div class="dot" style="opacity: 0; "></div></a><a data-page="configure" href="/configure/" style="z-index: 103; ">
<p>Configure</p>
<div class="dot" style="opacity: 0; "></div></a><a data-page="browse" href="/browse/" style="z-index: 102; ">
<p>Browse</p>
<div class="dot" style="opacity: 1; "></div></a><a data-page="craft" href="/craft/" style="z-index: 101; ">
<p>Craft</p>
<div class="dot" style="opacity: 0; "></div></a></div>
</div>
<div class="view__item_page page" style="display: block; "><div class="sidebar"><div class="titleImage"><a><img src="/data/applied_energistics_2/rv1-stable-1/images/ender_dust.png"></a></div><a class="craftingPlan externalLink" href="/craft/ender_dust" style="display: inline; "><p>See Crafting Plan</p></a></div><div class="mainBody"><h1 class="name">Ender Dust</h1><div class="byline" style="display: block; "><p>from <a href="/browse/applied_energistics_2/">Applied Energistics 2</a></p></div><div class="description"><p></p></div><div class="recipes section" style="display: block; "><h2>Recipes</h2><div class="panel"><div class="view__full_recipe"><div class="input"><h3>Ingredients</h3><div class="view__inventory_table"><table><tbody><tr class="view__stack"><td class="quantity"><input readonly="readonly"></td><td class="icon"><img src="/data/minecraft/1.7.10/images/ender_pearl.png"></td><td width="*" class="name"><a href="/browse/minecraft/ender_pearl/">Ender Pearl</a></td><td class="action" style="display: none; "><button class="remove">&nbsp;</button></td></tr><tr class="edit" style="display: none; "><td class="quantity"><input name="quantity"></td><td class="icon"><img src="/images/unknown.png"></td><td width="*" class="name"><input name="name" class="ui-autocomplete-input" autocomplete="off"></td><td class="action"><button name="add" disabled="disabled">add</button></td></tr></tbody></table><div class="toolbar" style="display: none; "><button name="clear">clear</button></div></div></div><div class="pattern"><table class="view__crafting_grid"><tbody><tr><td><a class="empty"><img src="/images/empty.png"></a></td><td><a class="empty"><img src="/images/empty.png"></a></td><td><a class="empty"><img src="/images/empty.png"></a></td></tr><tr><td><a class="empty"><img src="/images/empty.png"></a></td><td><a class="" href="/browse/minecraft/ender_pearl/" title="Ender Pearl"><img src="/data/minecraft/1.7.10/images/ender_pearl.png" alt="Ender Pearl"></a></td><td><a class="empty"><img src="/images/empty.png"></a></td></tr><tr><td><a class="empty"><img src="/images/empty.png"></a></td><td><a class="empty"><img src="/images/empty.png"></a></td><td><a class="empty"><img src="/images/empty.png"></a></td></tr></tbody></table><div class="tool"><a href="/browse/applied_energistics_2/quartz_grindstone/">Quartz Grindstone</a>, <a href="/browse/applied_energistics_2/wooden_crank/">Wooden Crank</a></div></div><div class="output"><h3>Produces</h3><div class="view__inventory_table"><table><tbody><tr class="view__stack"><td class="quantity"><input readonly="readonly"></td><td class="icon"><img src="/data/applied_energistics_2/rv1-stable-1/images/ender_dust.png"></td><td width="*" class="name"><a href="/browse/applied_energistics_2/ender_dust/">Ender Dust</a></td><td class="action" style="display: none; "><button class="remove">&nbsp;</button></td></tr><tr class="edit" style="display: none; "><td class="quantity"><input name="quantity"></td><td class="icon"><img src="/images/unknown.png"></td><td width="*" class="name"><input name="name" class="ui-autocomplete-input" autocomplete="off"></td><td class="action"><button name="add" disabled="disabled">add</button></td></tr></tbody></table><div class="toolbar" style="display: none; "><button name="clear">clear</button></div></div></div></div></div></div><div class="usedToMake" style="display: block; "><div class="view__item_group section"><h2>Used to Make</h2><div class="panel"><div class="view__item"><a href="/browse/applied_energistics_2/quantum_entangled_singularity/"><table><tbody><tr><td class="itemIcon"><img src="/data/applied_energistics_2/rv1-stable-1/images/quantum_entangled_singularity.png"></td><td width="*" class="itemName">Quantum Entangled Singularity</td></tr></tbody></table></a></div><div class="view__item"><a href="/browse/applied_energistics_2/wireless_booster/"><table><tbody><tr><td class="itemIcon"><img src="/data/applied_energistics_2/rv1-stable-1/images/wireless_booster.png"></td><td width="*" class="itemName">Wireless Booster</td></tr></tbody></table></a></div></div></div></div><div class="usedAsToolToMake" style="display: none; "><div class="view__item_group section"><h2>Used as Tool to Make</h2><div class="panel"></div></div></div><div class="similar" style=""><div class="view__item_group section"><h2></h2><div class="panel"></div></div></div><div class="plan"></div></div></div>
<div class="view__footer">
<div class="divider top"></div>
<div class="left">
<h2>
<p>About</p>
</h2>
<p>
Crafting Guide gives step-by-step tutorials for making anything in Minecraft or its many mods. Just say what
you'd like to make, what you already have, it will do the rest, giving you a list of raw materials you need
to collect and step-by-step instructions of how much to make of which items in the proper order. You can
even ask it to include the materials and instructions for all the tools you'll need along the way!
</p>
</div>
<div class="center">
<h2>
<p>Donate</p>
</h2>
<p>Crafting Guide is free for all, but if you find it helpful, donations in any amount are gratefully accepted.</p>
<div class="action">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top" class="centered">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="GCB2TYZJYLAE6">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"><img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
</div>
</div>
<div class="right">
<h2>
<p>Get Involved</p>
</h2>
<p>
Crafting Guide is completely open-source, and you can help! Whether you want to write a recipe book (all
simple JSON), or implement new features, just head over to GitHub to get started.
</p>
<div class="action">
<iframe src="http://ghbtns.com/github-btn.html?user=andrewminer&amp;repo=crafting-guide&amp;type=fork&amp;size=large" allowtransparency="true" frameborder="0" scrolling="0" width="100" height="32"></iframe>
</div>
</div><a href="/test.html" rel="nofollow">
<div class="divider bottom"></div></a>
</div>
</div>
<script src="/js/underscore.js"></script>
<script src="/js/jquery.js"></script>
<script src="/js/backbone.js"></script>
<script src="/js/jade.js"></script>
<script src="/js/when.js"></script>
<script src="/js/jquery-ui.js"></script>
<script src="/js/main.js"></script>
<script>
if (window.location.hostname === 'crafting-guide.com') {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-5871323-4', 'crafting-guide.com');
ga('require', 'displayfeatures');
ga('require', 'linkid', 'linkid.js');
}
</script>
<script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-54f3c9717b2e530d" async="async"></script>
<div style="visibility: hidden; height: 1px; width: 1px; position: absolute; top: -9999px; z-index: 100000; " id="_atssh"><iframe id="_atssh773" title="AddThis utility frame" style="height: 1px; width: 1px; position: absolute; z-index: 100000; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; left: 0px; top: 0px; " src="//s7.addthis.com/static/r07/sh200.html#iit=1425624011668&amp;tmr=load%3D1425624010288%26core%3D1425624011482%26main%3D1425624011662%26ifr%3D1425624011670&amp;cb=0&amp;cdn=0&amp;kw=&amp;ab=-&amp;dh=localhost&amp;dr=&amp;du=http%3A%2F%2Flocalhost%3A8000%2Fbrowse%2Fapplied_energistics_2%2Fender_dust&amp;dt=Ender%20Dust%20%7C%20Crafting%20Guide%20for%20Minecraft%20%7C%20The%20Ultimate%20Step-by-Step%20Tutorial%20for%20Making%20Anything%20in%20Minecraft&amp;dbg=0&amp;cap=tc%3D0%26ab%3D0&amp;inst=1&amp;jsl=1&amp;prod=undefined&amp;lng=en-US&amp;ogt=&amp;pc=men&amp;pub=ra-54f3c9717b2e530d&amp;ssl=0&amp;sid=54f94bcbd10586ea&amp;srpl=1&amp;srcs=1&amp;srd=1&amp;srf=1&amp;srx=1&amp;ver=300&amp;xck=0&amp;xtr=0&amp;og=&amp;aa=0&amp;csi=undefined&amp;toLoJson=uvs%3D54f94bcb8a44954a000%26chr%3DUTF-8%26md%3D0%26vcl%3D0&amp;rev=18.4-edge&amp;ct=1&amp;xld=1&amp;xd=1"></iframe></div><script type="text/javascript" src="http://s7.addthis.com/static/r07/core201.js"></script><div role="log" aria-live="assertive" aria-relevant="additions" class="ui-helper-hidden-accessible"></div><div role="log" aria-live="assertive" aria-relevant="additions" class="ui-helper-hidden-accessible"></div><ul class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content" id="ui-id-1" tabindex="0" style="display: none; "></ul><span role="status" aria-live="assertive" aria-relevant="additions" class="ui-helper-hidden-accessible"></span><ul class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content" id="ui-id-2" tabindex="0" style="display: none; "></ul><span role="status" aria-live="assertive" aria-relevant="additions" class="ui-helper-hidden-accessible"></span></body></html>