Ultimamente, tenho construído sites estáticos usando Stasis e, mais recentemente, Middleman . Eles são ótimos para trabalhar e perfeitos para combinar a utilidade de um sistema de modelos com a simplicidade e a velocidade que acompanham a exibição de arquivos estáticos.
Um dos sites em que estou trabalhando no momento é uma reescrita estática de um sistema WordPress volumoso. O que estamos fazendo no momento é a transição das páginas, uma por vez, de um sistema para outro.
O truque? Estamos colocando um site em camadas sobre o outro usando um Apache RewriteMap de texto simples .
Quando implantamos o site, ele passa por um processo de construção. O processo de construção gera a versão estática do site em nosso servidor. No final do processo de construção, produzimos um routes.map
arquivo parecido com este:
/about /path/to/about.html
/resources /path/to/resources.html
...
Podemos então escolher colocar um site em cima do outro adicionando algumas RewriteRules à diretiva VirtualHost ( nota: RewriteMaps só funcionam dentro de uma diretiva VirtualHost, não em um .htaccess
arquivo):
# Enable rewrite engine
RewriteEngine on
# Declare a rewrite map that maps relative URL paths to static content
RewriteMap locale_map txt:/path/to/build/routes.map
# Use the map, if it contains a match
RewriteCond ${locale_map:$1} >""
RewriteRule ^(.*)$ ${locale_map:$1}
Basicamente, interceptamos a solicitação que normalmente seria direcionada para o site WordPress subjacente e, em vez disso, exibimos nosso conteúdo estático. Se uma solicitação chega e não é contabilizada dentro do mapa de rotas, ela simplesmente continua na cadeia normal do WordPress abaixo.
A beleza desse código é que ele nos permite personalizar facilmente o roteamento de nosso site estático e podemos usá-lo para oferecer suporte a URLs antigos, redirecionamentos personalizados ou qualquer outra coisa de que precisarmos.