Migrando do WordPress para o Middleman, sem quebrar URLs

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.maparquivo 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 .htaccessarquivo):

# 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.