Hay muchas razones para querer procesar archivos HTML como archivos PHP. Algunos webmasters lo hacen porque están convirtiendo un antiguo sitio estático a un sitio web dinámico y no quieren perder pagerank. Otras webs lo hacen porque los motores de búsqueda parecen favorecer a las páginas que tienen extensión .html sobre las que tienen extensión .php. O quizás lo estás haciendo por razones de seguridad… No quieres que los visitantes sepan qué lenguaje de script usas para tu sitio web.
Por suerte, la interpretación de archivos HTML como PHP se consigue fácilmente mediante el uso de un archivo htaccess.
Crear un archivo htaccess
Si no sabes nada sobre archivos htaccess, no te preocupes. Los archivos htaccess son simples archivos de texto que se guardan con extensión .htaccess. Y se crean fácilmente con un editor de texto simple como el Bloc de notas o WordPad. Sólo habrá que escribir o pegar el código necesario, guardar el archivo como .htaccess y subirlo al servidor, en la raíz de nuestro sitio web.
El código
Sólo necesitas una línea de código para hacer esto. Desgraciadamente, el código varía dependiendo de la configuración de tu servidor. Y a menos que tu proveedor de hosting proporcione información sobre esto, no hay manera de saber qué código funcionará. Pero aquí hay ejemplos de código típicos. (Nota: Si estos códigos no funcionan, es necesario consultar a tu hosting.)
→ En hostings que tienen dos versiones de PHP:
Algunos hostings web que tienen, o han tenido, dos versiones de PHP como PHP4 y PHP5, normalmente tienen un “handler” PHP5. El ejemplo de código de abajo interpretará todos los archivos .html y .htm como PHP. (Este código ha sido probado en HostGator y InMotion. Y en el proveedor de hosting gratuito x10Hosting.)
AddHandler application/x-httpd-php5 .html .htm
→ En la mayoría de hostings:
En los hostings que tienen una sola versión de PHP, el siguiente código debaría funcionar. (Este código ha sido probado en Superb y LunaPage.)
AddType application/x-httpd-php .html .htm
o, si la directiva AddType no funciona, puedes usar la directiva AddHandler como sigue:
AddHandler application/x-httpd-php .html .htm
o…
AddHandler x-httpd-php .html .htm
Algunos hostings, como GoDaddy requieren ambas directivas. Así que tu código sería como este:
AddType application/x-httpd-php .htm .html AddHandler x-httpd-php .htm .html
Como última opción, también puedes probar esta forma multilínea que usa la directiva SetHandler:
<FilesMatch "\.(htm|html|php)$"> SetHandler application/x-httpd-php </FilesMatch>
o…
<FilesMatch "\.(htm|html|php)$"> SetHandler application/x-httpd-php5 </FilesMatch>
ACTUALIZACIÓN:
Probando configuraciones en un servidor Linux de 1&1, he comprobado que en este hosting no funciona ninguna de las directivas anteriores, sino que tendríamos que usar la siguiente:
AddType x-mapp-php5 .html .htm
Complicaciones
A veces, puede que ninguno de los códigos de arriba funcione. En este caso, hay varias cosas que podemos hacer:
- Consulta a tu proveedor de hosting para saber la configuración de tu servidor, y ver si se podría usar algún otro código.
- Comprobar que la extensión es correcta. Si nunca has usado archivos htaccess, es fácil equivocarse al crearlos. El fallo más común es guardar el archivo con una extensión errónea. Para arreglar esto, puedes cambiar fácilmente el nombre del archivo después de subirlo al servidor. Renombra el archivo de forma que no tenga nombre pero sí extensión. De forma que el nombre de archivo debería aparecer como “.htaccess“.
- Esperar. A veces los hostings tienen algo llamado “server-side cache” (caché del lado del servidor). Esto significa que los archivos tardan un tiempo en ‘hacer efecto’. Si estás en GoDaddy, por ejemplo, deberías esperar unos 30 minutos.
- Comprobar permisos. Asegúrate de que tus archivos htaccess tienen los permisos correctos. Para ver o cambiar permisos tendrás que usar CHMOD o tu gestor FTP.
Temas de seguridad & rendimiento
Hay algunos asuntos de seguridad de los que deberías ser consciente, sobretodo si estás en un plan de hosting web compartido. Primero, si hay un problema con tu archivo HTACCESS, tu archivo podría ser descargado por tus visitantes o visto como texto. Así que si hay cualquier dato sensible como contraseñas o información de base de datos, nunca deberían ser guardados en un archivo HTML. Segundo, si tu proveedor de hosting cambia la configuración de tu servidor, esto podría afectar a la forma en que tus archivos son procesados. Tercero, si alguna vez piensas mover tu sitio web, tu archivo HTACCESS puede no ser compatible con la nueva configuración. Y finalmente, se estima que los sitios web que usan esta alternativa son ligeramente más lentos que los que simplemente usan archivos PHP.
Por lo tanto, recomendamos esto como una buena solución para sitios web pequeños. (Los sitios web pequeños son aquellos con menos de 50 páginas.) Sin embargo, cuando tu sitio web aumenta de tamaño, sería una buena idea elegir una solución más robusta que será capaz de servir un sitio web de cualquier tamaño.
ACTUALIZACIÓN:
Probando configuraciones en un servidor Linux de 1&1, he comprobado que en este hosting no funciona ninguna de las directivas anteriores, sino que tendríamos que usar la siguiente:
Muchas Gracias GeekRMX !
Tienes razón, después de probar todos los códigos que comentas, sólo funciona el que indicas en 1&1. He leído varios blogs y ninguno informa de este dato (Suerte que he llegado a tu blog ;))
Un cordial saludo desde Barcelona
Mil gracias…! sobre todo la actualización para 1&1, imprescindible.
Excelente artículo, me ha servido muchisimo, con el cambio de servers en DreamHost fue un caos.
Me sirvio de maravilla este.
AddHandler application/x-httpd-php5 .html .htm
Saludos cordiales y éxitos.
Para muchos que se lo preguntan, para WampServer la que sirve es esta:
AddHandler application/x-httpd-php .html .htm
Saludos!
Gracias. Tras algunas horas de trabajo perdidas, gracias a este post realmente completo he conseguido lo que necesitaba, pues en otros con menos información no estaba la que yo necesitaba.
application/x-httpd-php5 🙂
Un saludo desde open-office.es
Excelente articulo muy interesante, por casualidad no sabes si hay algun metodo parecedo pero que funcione en servidores basado en microsoft (IIS) ?
Gracias lo estoy probando en mi hosting a ver si funciona
¿Se pueden poner todas estas directivas juntas en el .htaccess sin que de ningún problema?
Es que sino tendré que ir probando una por una, además de esperar unos 30 minutos por si el servidor tiene “server-side cache”
Gracias, un saludo.
Te recomiendo que las pruebes una a una, porque unas funcionarán y otras pueden producir un error de servidor. Si las pruebas una a una sabrás cuál es la correcta para tu servidor. Saludos.
Gracias Master! ¿sabés que tipo de datos le debería pedir al hosting para saber exactamente que línea es la que me sirve? o si directamente no me sirve ninguna…?
Tengo la web alojada en un hosting bastante impresentable (Neolo).
Necesito hacer redirecciones 301, pero estos tipos ya me informaron que desde ficheros html o htm no se pueden hacer, solo desde carpetas. Un desastre.
Eso no me sirve porque yo quiero redirigir con 301 las páginas que ya tengo bien posicionadas.
Así que ahora empecé a buscar por mis propios medios como sulucionarlo y me encontré con esta forma que parece ser la más acertada para el problema.
Un saludo.
Lo siento, en eso no te puedo ayudar, y dudo que los del hosting sepan darte ese dato.
Lo que no me queda claro es por qué estás intentando aplicar estas directivas si solo necesitas hacer redirecciones 301.
¿No puedes introducir en tu .htaccess redirecciones del tipo Redirect 301 o RewriteCond/RewriteRule?
Saludos.
Mira tengo esto en el htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^viejaweb\.com\.ar$ [OR]
RewriteCond %{HTTP_HOST} ^www\.viejaweb\.com\.ar$
RewriteRule ^(.*)$ “http\:\/\/www\.nuevaweb\.com\.ar\/$1” [R=301,L]
Esto me redirecciona el dominio principal perfectamente, pero el resto de las secciones de la web no (todas son htm).
Como te contaba, en el hosting me informaron que .htm ni .jpg se pueden redirigir ¿?
Es decir, si alguien entra por medio de un buscador a viejaweb.com.ar/seccion1.htm no redirige a la nueva web.
Ya probé hacerlas una por una con: Redirect 301 /seccion1.htm http://www.nuevaweb.com.ar/seccion1 y no pasa nada.
Ok, si ya has probado todas las opciones no te queda otra que intentarlo con las directivas, a ver si hay suerte.
Saludos.
muy buen post! a mi no me funciono ninguna de las formas que porpones… asi que me puse en contacto con mi hosting….
AddHandler php-script .html
para que la añadas si te apetece! 🙂
Genial post. Gracias por aportarlo…Espero màs…
Saludos