Usando Clean URLs

Drupal tiene la opción de cambiar la manera en que se muestran las direcciones dentro del sitio, generalmente una pagina (node) tiene una dirección más o menos así:

http://www.drupalmexico.com/node/9

con la opción de Clean url se puede cambiar la dirección a algo así:

http://www.drupalmexico.com/warnerdrupal

Resulta más facil de leer y se supone ayuda a que los buscadores pongan la pagina en mejor lugar de resultados.

Para hacer que funcione esta opción se requieren dos pasos, primero una pequeña modificación en el servidor apache, para la mayoria que usamos servidores compartidos y no podemos ajustar directamente el servidor, este ajuste se hace en el archivo .htaccess en el cual se escribe el siguiente script:

# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on

# If your site can be accessed both with and without the 'www.' prefix, you
# can use one of the following settings to redirect users to your preferred
# URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option:
#
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# adapt and uncomment the following:
# RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
# RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
#
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment and adapt the following:
# RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
# RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
# RewriteBase /drupal
#
# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
# RewriteBase /

# Rewrite URLs of the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>


Como veran el script viene documentado, en mi caso solo necesite pegar el script y salvar el archivo para que funcionara, en otros casos tiene uno que quitar las lineas de comentario // para que alguna opción se aplique, sobre todo en cuanto a la dirección donde se encuentra Drupal dentro del servidor.

Una vez que se hizo este cambio se entra a la sección de administración de Drupal y en la sección de modulos se activa el modulo de path (es un modulo que trae por defualt Drupal) despues en la secció de administración se tiene que buscar las opciones de Clean URLs y tocar el boton de hacer una prueba si no se toca esta opción no se activa el boton para activar los urls limpios.

Si todo salio bien ya se pueden cambiar las dirección de los nodos, existen tres maneras, la primera y más sencilla es al crear un nodo nuevo o modificar uno existente, aparece como nueva opción la de URL path settings que es un campo donde se le asigna nombre a la dirección es mportante no poner acentos o una eñe asi como no poner espacios.

La otra manera es hacer reglas más generales con URL Aliases, en el area de administración esta esta opción al crear una nueva regla se indica el url como estaba antes y como quedaria despues en el caso de Drupal mexico sirve para mostrar las sección de temas con el nombre de cada sección: tutoriales, cometnarios etc.

FInalmente esta el modulo Pathauto que se supone sirve para crear estas direcciones de manera automatica, por el momento no he acabado de lograr que funcione correctamente.

en este momento tengo funcionando esta opción de clean url en Drupalmexico, me hace falta implementarlo en sitios algo más complicados por ejemplo que usen varios templates que cambia por la categoria en que esten y ver si no existe ningun conflicto entre modulos.


Dejo ligas a la documentación en el sitio de Drupal que resulta de gran ayuda:

Esta primera explica a detalle como usar la opción de Clean URL: http://drupal.org/node/15365

Esta segunda es una colección de script para modificar el archivo .htaccess. no todos son para cambiar el url:

http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess?view=markup