Apache mod_rewrite
Tratando de implementar el famoso botón “Like” de Facebook a unos de los desarrollos de paginas hechos de manera reciente, me encontré que tenía problemas con el servidor Apache 2 que administro. Predefiní una rutina o función en PHP para que ciertas páginas tuviesen su botón Facebook Like por defecto. Para no extender tanto esto, resulta que el botón de Facebook Like no soporta (al menos en mi caso), que coloques una dirección del tipo http://dominio.com, sino que debe ser estrictamente http://www.domino.com, es decir con el prefijo www antes del nombre del dominio.
El procedimiento que me dio resultado en un servidor Apache 2 (versión 2.2.19) utilizando el modulo mod_rewrite:
1. Activar el modulo en httpd.conf , es decir remover el signo de “#” al inicio de la linea
LoadModule rewrite_module modules/mod_rewrite.so
2. Despues de la definicion de la variable DocumentRoot en el mismo archivo agregar
AccessFileName .htaccess ht.acl
3. Por último agregar enseguida el directorio de la pagina que vamos a reescribir usando el mod_rewrite
<Directory “c:/algun_directorio”>
AllowOverride All
Options None
Order deny,allow
</Directory>
4. Por ultimo crear un archivo de nombre “.htaccess” en “c:/algún_directorio”
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^dominio\.com$
RewriteRule ^(.*)$ http://www.dominio.com/$1 [R=301,L]
</IfModule>
¿Qué hacer en caso de que no controlemos Apache?
Como parte también de mis servicios, y antes de contar con un servidor propio para administrar. Tenía que contratar los servicios de otras empresas dedicadas a Hostear dominios y paginas, para resolver dicho problema, claro que la empresa que te ofrece servicios debe tener su mod_rewrtie habilitado, si es así, y bajo un ambiente Linux, crear el mismo archivo “.htaccess” y escribir el siguiente código:
RewriteEngine on
rewritecond %{http_host} ^dominio.com [nc]
rewriterule ^(.*)$ http://www.dominio.com/$1 [r=301,nc]