{"id":989,"date":"2018-12-13T16:47:55","date_gmt":"2018-12-13T15:47:55","guid":{"rendered":"https:\/\/blogs.ugr.es\/tecweb\/?p=989"},"modified":"2018-12-13T16:47:55","modified_gmt":"2018-12-13T15:47:55","slug":"urls-limpias-en-drupal-7","status":"publish","type":"post","link":"https:\/\/blogs.ugr.es\/tecweb\/urls-limpias-en-drupal-7\/","title":{"rendered":"URLs limpias en Drupal 7"},"content":{"rendered":"<p>Una URL limpia (clean URL) es la que no contiene par\u00e1metros t\u00e9cnicos ni variables en su estructura, por lo que son f\u00e1ciles de comprender por el usuario:<\/p>\n<pre>http:\/\/www.ejemplo.es\/catalogo\/el_libro_de_la_selva<\/pre>\n<p>En contraposici\u00f3n, una URL sucia (o no limpia) es aquella que est\u00e1 formada por caracteres que la hacen de dif\u00edcil comprensi\u00f3n, como, por ejemplo:<\/p>\n<pre>http:\/\/www.ejemplo.es\/catalogo\/index.php?q=254<\/pre>\n<p>Suele ser habitual que se identifique URL limpia con URL amigable (o pretty URL, o semantic URL, o friendly URL). En realidad, desde el punto de vista formal, son lo mismo. Lo que sucede es que en Drupal es necesario tener activadas las URLs limpias para que luego se puedan convertir en amigables por medio de un m\u00f3dulo (generalmente <a href=\"https:\/\/www.drupal.org\/project\/pathauto\" target=\"_blank\" rel=\"noopener\">pathauto<\/a>). Y esto es porque si solo tienes URLs limpias en Drupal, la URL que se forma a partir de una entrada ser\u00e1 la del nombre del nodo que la contiene y su n\u00famero de orden. Como lo que generalmente conviene es que la URL est\u00e9 formada por el t\u00edtulo de la entrada, es necesario emplear un m\u00f3dulo como el comentado anteriormente.<\/p>\n<p>Tener URLs limpias en tu instalaci\u00f3n de Drupal es muy importante desde varios puntos de vista, aunque destacan principalmente dos. Por un lado el posicionamiento, porque:<\/p>\n<ul>\n<li>&#8211; si son cortas son m\u00e1s f\u00e1ciles de recordar<\/li>\n<li>&#8211; generan m\u00e1s tr\u00e1fico, al ser m\u00e1s f\u00e1ciles de recordar<\/li>\n<li>&#8211; facilitan la lectura y la comprensi\u00f3n del contenido que contienen, incluso antes de entrar en ellas<\/li>\n<li>&#8211; son m\u00e1s est\u00e9ticas y dan una mayor sensaci\u00f3n de seguridad y confianza.<\/li>\n<\/ul>\n<p>Y, por otro, porque permiten crear ficheros <a href=\"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-robots-txt\/\" target=\"_blank\" rel=\"noopener\">robots.txt <\/a>y <a href=\"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-sitemap-xml\/\" target=\"_blank\" rel=\"noopener\">sitemap.xml<\/a> m\u00e1s precisos y exactos, facilitando el proceso de indexaci\u00f3n del sitio. De hecho, en Drupal, si no hay URLs limpias es muy probable que tu fichero robots.txt est\u00e9 mal formado y te genere errores en el informe de estado.<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url01.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-993 size-full\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url01.jpg\" alt=\"problemas en el m\u00f3dulo robots.txt por no tener las urls limpias\" width=\"800\" height=\"80\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url01.jpg 800w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url01-300x30.jpg 300w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url01-700x70.jpg 700w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Lo cierto es que si se est\u00e1 haciendo la instalaci\u00f3n en modo local, para test, o en un servidor dedicado, no suele existir problema alguno por parte de Drupal. Sin embargo, cuando trabajamos en otros entornos (principalmente servidores compartidos y hostings -especialmente gratuitos-) Drupal suele dar muchos errores y falsos positivos en lo que a la gesti\u00f3n de URLs limpias se refiere.<\/p>\n<p>Los chicos de Drupal publicaron hace unos a\u00f1os un <a href=\"https:\/\/www.drupal.org\/docs\/7\/configuring-clean-urls\/enable-clean-urls\" target=\"_blank\" rel=\"noopener\">peque\u00f1o manual<\/a> que van actualizando con cierta frecuencia, explicando c\u00f3mo proceder en cada caso pero, sinceramente, creo que la cosa no terminan de explicarla del todo bien. De hecho, me recuerdan mucho a la gente del Consorcio W3C, con sus engorrosas explicaciones de cosas sencillas.<\/p>\n<p>Como son muchas las veces que he tenido que explicar este proceso, he pensado que lo mejor era hacer una entrada en la que explicara qu\u00e9 hay que hacer. Para eso, he creado una cuenta en un hosting gratuito cualquiera y he realizado una instalaci\u00f3n est\u00e1ndar de Drupal 7.x.<\/p>\n<h3>Paso 1. Verificar el estado de las URLs<\/h3>\n<p>Lo habitual suele ser que Drupal active por defecto las URLs limpas, pero si el hosting no est\u00e1 configurado correctamente, tendremos un problema.<\/p>\n<blockquote><p>&#8211; \u00bfY por qu\u00e9 el hosting no est\u00e1 configurado correctamente?<\/p>\n<p>&#8211; Para que las URLs puedan aparecer sin par\u00e1metros de configuraci\u00f3n es necesario que sucedan una de estas dos cosas: que est\u00e9 instalado el m\u00f3dulo <a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_rewrite.html\" target=\"_blank\" rel=\"noopener\">mod_rewrite<\/a> en Apache o que el fichero .htaccess est\u00e9 configurado correctamente. Para lo primero no hay soluci\u00f3n, ya que si estamos en un hosting compartido nunca podremos acceder a la configuraci\u00f3n de Apache. Para la segunda opci\u00f3n s\u00ed hay soluci\u00f3n, y es lo que explicar\u00e9 aqu\u00ed.<\/p>\n<p>&nbsp;<\/p><\/blockquote>\n<p>Para verificar el estado de las URLs limpias hay que acudir a:<\/p>\n<pre>Home -&gt; Administraci\u00f3n -&gt; Configuraci\u00f3n -&gt; B\u00fasqueda y medatados<\/pre>\n<p>donde accederemos a la informaci\u00f3n que necesitamos. Si no est\u00e1n activadas no encontraremos con algo parecido a esto:<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-999 size-full\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\" alt=\"mensaje de error con las urls limpias\" width=\"800\" height=\"162\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg 800w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-300x61.jpg 300w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-700x142.jpg 700w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Y, si ejecutamos el test, no dir\u00e1 que ha fallado:<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url03.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1000\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url03.jpg\" alt=\"fallo en el test de urls limpias\" width=\"800\" height=\"211\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url03.jpg 800w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url03-300x79.jpg 300w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url03-700x185.jpg 700w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Lo primero que tenemos que averiguar es si se trata de un falso negativo. En ocasiones, el test dice que ha fallado en su b\u00fasqueda de URLs limpias pero, en realidad, s\u00ed est\u00e1n activadas. Posiblemente por alg\u00fan problema en la gesti\u00f3n de la cach\u00e9, bien del cliente, bien de Drupal, aparece ese mensaje err\u00f3neo. En realidad saber si se trata de un falso negativo es sencillo: solo hay que mirar la URL de administraci\u00f3n que en esos momentos aparece en el navegador. Si despu\u00e9s del dominio aparece el siguiente conjunto de caracteres: <em>?q=<\/em> significa que, efectivamente, no est\u00e1n activadas. Si aparece ese conjunto de caracteres estaremos ante un falso negativo, por lo cual, en realidad no tendremos problema alguno. Solo ser\u00e1 necesario acudir al <em>informe de estado<\/em>, y veremos que el problema se ha solucionado.<\/p>\n<h3>Paso 2. Editar el fichero .htaccess<\/h3>\n<p>Si el problema persiste, la \u00fanica forma que tenemos de solucionarlo es editando el fichero .htaccess que, <a href=\"https:\/\/blogs.ugr.es\/tecweb\/el-fichero-htaccess\/\" target=\"_blank\" rel=\"noopener\">como ya sabemos<\/a>, permite ajustar determinadas configuraciones de Apache en el entorno para el que estamos trabajando.<\/p>\n<p>A ese fichero se puede acceder tanto desde el administrador de ficheros del hosting como desde cualquier cliente FTP.<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url04.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1001\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url04.jpg\" alt=\"ubicaci\u00f3n del fichero .htaccess en el administrador de ficheros del hosting\" width=\"543\" height=\"480\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url04.jpg 543w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url04-300x265.jpg 300w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<p>Una vez lozalizado el fichero debemos editarlo, y buscar dentro de \u00e9l la llamada a la directriz <em>RewriteBase \/<\/em> que, seguramente estar\u00e1 precedida de una almohadilla (#), lo que signifca que es un comentario y, como tal, no se ejecuta. Esa directriz es la que nos permitir\u00e1 incluir URLs amigables en nuestro sitio que, al estar en un hosting compartido por m\u00e1s usuarios, es una carpeta ra\u00edz virtual, asignada a nuestro espacio.<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url05.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1002\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url05.jpg\" alt=\"editando el fichero .htaccess en el administrador de ficheros del hosting\" width=\"658\" height=\"135\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url05.jpg 658w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url05-300x62.jpg 300w\" sizes=\"auto, (max-width: 658px) 100vw, 658px\" \/><\/a><\/p>\n<p>Lo \u00fanico que tenemos que hacer es eliminar la almohadilla, para que se cargue la directriz. Una vez hecho esto, guardamos el fichero. Si lo hemos editado desde el administrador de ficheros del hosting ya est\u00e1 todo hecho; si lo hemos hecho desde el cliente FTP lo m\u00e1s probable es que nos haya obligado a descargar el fichero y editarlo en local, por lo que tendremos que subirlo de nuevo al servidor.<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url06.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1003\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url06.jpg\" alt=\"editando el fichero .htaccess en el administrador de ficheros del hosting\" width=\"674\" height=\"124\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url06.jpg 674w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url06-300x55.jpg 300w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a><\/p>\n<h3>Paso 3. Verificaci\u00f3n final<\/h3>\n<p>A continuaci\u00f3n volvemos otra vez al sistema de activaci\u00f3n de URLs limpias de Drupal:<\/p>\n<p>Home -&gt; Administraci\u00f3n -&gt; Configuraci\u00f3n -&gt; B\u00fasqueda y medatados<\/p>\n<p>y nos deber\u00eda aparecer esto, que es lo que permite activar definitivamente las URLs limpias:<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url07.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1004\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url07.jpg\" alt=\"verificaci\u00f3n final\" width=\"462\" height=\"209\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url07.jpg 462w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url07-300x136.jpg 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><\/a><\/p>\n<p>Lo marcamos, guardamos la configuraci\u00f3n, y con el siguiente mensaje ya est\u00e1 listo todo:<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url08.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1005\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url08.jpg\" alt=\"ya est\u00e1n las urls limpias activadas\" width=\"492\" height=\"263\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url08.jpg 492w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url08-300x160.jpg 300w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/a><\/p>\n<h3>Paso 4. A veces todo esto falla<\/h3>\n<p>En ocaciones, y por problemas de la cach\u00e9 de Drupal, una vez que finalizamos el paso 3 e intentamos activas las URLs limpias, no aparece el cuadro para marcar esta opci\u00f3n. De hecho, sigue apareciendo un mensaje similar al segundo pantallazo que he incluido en esta entrada:<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-999 size-full\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\" alt=\"mensaje de error con las urls limpias\" width=\"800\" height=\"162\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg 800w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-300x61.jpg 300w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-700x142.jpg 700w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Si eso sucede, lo mejor es acceder directamente al activador de URLs limpias introduciendo la siguiente direcci\u00f3n en el navegador:<\/p>\n<pre>http:\/\/ejemplo.es\/admin\/config\/search\/clean-urls<\/pre>\n<p>o, si la cosa persiste en su cabezoner\u00eda:<\/p>\n<pre>http:\/\/ejemplo.es\/?q=admin\/config\/search\/clean-urls<\/pre>\n<p>Eso nos llevar\u00e1 directamente a la opci\u00f3n que necesitamos activar, y listo. Ya puedes instalar pathauto y empezar a tener tus primeras URLS amigables.<\/p>\n<p><a href=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-999 size-full\" src=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg\" alt=\"mensaje de error con las urls limpias\" width=\"800\" height=\"162\" srcset=\"https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02.jpg 800w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-300x61.jpg 300w, https:\/\/blogs.ugr.es\/tecweb\/wp-content\/uploads\/sites\/55\/2018\/12\/url02-700x142.jpg 700w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una URL limpia (clean URL) es la que no contiene par\u00e1metros t\u00e9cnicos ni variables en su estructura, por lo que son f\u00e1ciles de comprender por el usuario: http:\/\/www.ejemplo.es\/catalogo\/el_libro_de_la_selva En contraposici\u00f3n, una URL sucia (o no limpia) es aquella que est\u00e1 formada por caracteres que la hacen de dif\u00edcil comprensi\u00f3n, como, por ejemplo: http:\/\/www.ejemplo.es\/catalogo\/index.php?q=254 Suele ser [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":1008,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[72,45],"tags":[40,25,60,81,106],"class_list":{"0":"post-989","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-arquitectura-de-los-sistemas-de-informacion-basados-en-la-web","8":"category-content-management-systems","9":"tag-administrador-del-sitio","10":"tag-drupal","11":"tag-posicionamiento","12":"tag-robots-txt","13":"tag-sitemap-xml","14":"entry"},"_links":{"self":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/comments?post=989"}],"version-history":[{"count":3,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/989\/revisions"}],"predecessor-version":[{"id":1009,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/posts\/989\/revisions\/1009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media\/1008"}],"wp:attachment":[{"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/media?parent=989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/categories?post=989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugr.es\/tecweb\/wp-json\/wp\/v2\/tags?post=989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}