Seguramente muchas veces un cliente les ha pedido un sitio completo y enorme sólo en HTML. O sea, nada de utilizar PHP, Ruby o Python, ni menos hablar de un CMS como Drupal o WordPress. Si es así, entonces sabrán lo tedioso que se vuelve modificar una pequeña parte del sitio en una centena de plantillas cuando éste ya está prácticamente listo.
Por suerte en linux existe una pequeña pero poderosa herramienta llamada wget, que sirve para descargar sitios completos.
Con wget y un poco de ingenio podremos producir las plantillas HTML que necesitamos, pero usando nuestro gestor de contenidos favoritos. Para conseguirlo, por ejemplo, podemos usar reglas de reescritura en el .htaccess para que los archivos .html sean tratados tal como uno .php; también sería posible usar un pequeño y muy básico modelo MVC para que según la variable $_SERVER["REQUEST_URI"] (quitando los slashes y la extension .html con ereg_replace o split) se pueda obtener el nombre de la plantilla HTML/PHP que deseamos utilizar.
En index.php:
if (file_exists(“/ruta_template/”.$mvc->uri.’.php’)){
include(“/ruta_template/”.$mvc->uri.’.php’);
}
Y en .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Y finalmente descargamos con wget usando sus opciones:
- recursive: descarga el sitio web completo.
- domains misitio.org: no descarga enlaces fuera de website.org.
- no-parent: no sigue los enlaces fuera del directorio micarpeta/html/.
- page-requisites: obtiene todos los elementos que componen la página (imágenes, css, javascript)
- html-extension: guarda los archivos con extensión .html (ojo con esto que no lo he probado y seguro nos ahorra harto trabajo)
- convert-links: convierte los enlaces para que puedan trabajarse fuera de línea.
- restrict-file-names=windows: modifica el nombre de archivos para que también funcionen en Windows.
- –no-clobber: no sobrescribe ningún archivo existente (en caso de reanudar una descarga interrumpida)