Cómo acceder a contenidos mediante la URL
Una de las opciones que más me gusta de la Wikipedia es la posibilidad de buscar contenidos usando la url. Para ello tan solo hay que escribir lo que queremos buscar después de esta dirección:
http://es.wikipedia.org/wiki/
Por ejemplo, si queremos buscar información sobre La Habana deberíamos poner lo siguiente:
http://es.wikipedia.org/wiki/La_Habana
Si encuentra algo lo muestra y si no es así, o te muestra una lista de posibilidades o te muestra una página de error 404.
Para poder incluir algo parecido en nuestro site deberemos modificar la configuración de Apache y crearnos un script (en este caso en PHP). Puede sernos muy útil si usamos tags o similares.
El funcionamiento es sencillo, redigiremos todos los accesos a una ruta a un script PHP, en el script comprobaremos cual era la url original y obteniendo el tag que hemos añadido, accederemos a la página correspondiente.
Imaginemos un caso, tenemos un blog que habla sobre cocina, recetas, etc… (http://www.miblogdecocina.com), el cual está dividido en varios apartados (carnes, pescados, sopas, postres, …) y hay tags por alimentos (cerdo, pollo, azúcar, …). Queremos que se pueda acceder a los contenidos, ya sean secciones o recetas por ingredientes, mediante una url: http://www.miblogdecocina.com/tags/[loquesea].
Lo primero es modificar la configuración de Apache, editamos el fichero http.conf y le añadimos la siguiente línea:
RedirectMatch /tags/* /tags.php
La directiva RedirectMatch redirecciona los accesos hacia un script, en este caso el que se encarga de comprobar la url y mostrar el resultado (/tags.php).
Después será necesario obtener de la URL original el tag que hemos usado y mostrar la información.
<?
// Obtenemos el tag
$origen = $_SERVER['REQUEST_URI'];
$rutatags = "/tags/";
$tag = substr($origen, strlen($rutatags));
// Comprobamos si hay una categoría con ese tag
// Si existe mostramos la pagina
// En caso contrario buscamos recetas que
// tengan como ingrediente ese tag
// Si existen las mostramos
// Si no existen mostramos un mensaje de error
?>
Ya tenemos nuestro acceso directo a tags similar a la Wikipedia o a Flickr.
Interesante estudio sobre comparativa de sentencias en PHP5 que obtienen el mismo resultado, para conocer cual de ellas es la más rápida. Por ejemplo: es más rápido concatenar una cadena a una variable usando el punto (.) que incluyéndo la variable entre comillas dobles, para expresiones regulares es más rápido usar preg_match que eregi, es 8 veces más rápido usar explode que split. También es una buena referencia para saber como hacer lo mismo de distintas formas. Pero lo que más me ha sorprendido es que comparando con PHP4 las expresiones regulares se han vuelto más lentas (casi 7 veces más rápido en PHP4 que en PHP5), lo cual me hace pensar que o bien es debido a una mejora que completa las expresiones regulares, o antes no se hacÃan muy bien, porque ir a peor no tiene mucho sentido.
Después de un año que anunciábamos sobre la aparición de