[Перевод] URL rewriting на Github Pages
Но была одна проблемка: я хотела красивые урлы, например http://play.csssecrets.io/pie-animated, которые бы редиректили на демки на dabblet.com. Любой нормальный человек бы скорее всего стиснул зубы и использовал какой-нибудь серверный язык для этого. Но я же не совсем нормальная :)
Оказывается, Github уже использует свой собственный URL rewriting для Github Pages: если вы добавите 404.html
в репозиторий, любой несуществующий URL будет перенаправлен на него. Погодите-ка, а разве не то же самое мы делаем на сервере для того, чтобы красивые урлы заработали? Мы можем сделать ровно то же самое, что мы делаем на сервере с помощью JavaScript в 404.html
!
Итак, я создала:
- JSON файл со всеми IDшниками демок и соответствующими dabblet урлами,
- 404.html, который или редиректит или показывает ошибку
- Vanilla JS скрипт, который читает URL, JSON файл и редиректит на dabblet.
Вот, собственно, JS без шелухи:
(function(){
document.body.className = 'redirecting';
var slug = location.pathname.slice(1);
xhr({
src: 'secrets.json',
onsuccess: function () {
var slugs = JSON.parse(this.responseText);
var hash = slugs[slug];
if (hash) {
// Redirect
var url = hash.indexOf('http') == 0? hash : 'http://dabblet.com/gist/' + hash;
$('section.redirecting > p').innerHTML = 'Redirecting to ' + url + '…';
location.href = url;
}
else {
document.body.className = 'error not-found';
}
},
onerror: function () {
document.body.className = 'error json';
}
});
})();
Это всё! Вы можете использовать этот же приём для того, чтобы редиректить на другие HTML страницы Github Pages, иметь человечные урлы для одностраничного сайта, и многое другое! Это хак? Конечно. Но когда это нас останавливало? :)
Комментарии (2)
4 декабря 2016 в 15:24
+1↑
↓
Автор оригинала — девушка.
4 декабря 2016 в 15:28
0↑
↓
Упс :) Поправил, спасибо.