Avatar Image
Moderador del foro
Moderador del foro

Apache ofrece la posibilidad de usar un módulo llamado mod_rewrite que nos permite crear URLs Amigables mediante expresiones regulares.

Pero no todos los servidores ofrecen esta posibilidad. Teniendo en cuenta que en los Espacios web de Miarroba no se permiten los ficheros .htaccess, no podemos utilizar el mod_rewrite para hacer URLs Amigables.

En su lugar, Miarroba ha incorporado en todos sus espacios un método alternativo para ello: el fichero friendly_urls.php.



FRIENDLY_URLS.PHP

Al crear un fichero llamado friendly_urls.php en la raíz del espacio web, todas las peticiones que no sean ficheros reales pasarán por ese archivo.

Es decir, si el fichero al que se hace la petición no existe, la petición se realiza a friendly_urls.php.

¿CÓMO FUNCIONA?

Imaginemos que tenemos un blog con URLs de la forma:

https://blog.webcindario.com/article/?id=123456

Y queremos crear URLs Amigables de la forma:

https://blog.webcindario.com/article/123456-titulo-del-articulo.html



La petición a la primera ruta iría al fichero index.php de la carpeta article, recogería la variable mediante GET, y mostraría el artículo correspondiente. En el segundo caso (suponiendo que no existe esa ruta) pasaría por friendly_urls.php, donde deberíamos tener algo como esto:

<?php

// Recoger URI
$URI = $_SERVER["REQUEST_URI"];

// Expresión regular
$preg = "/\/article\/([0-9]+)([-a-z0-9]+)\.html/"; 

// Obtener Id
$id = preg_replace($preg, "$1", $URI);

// Incluir articulo (hay que modificar el archivo para no recoger el id mediante $_GET)
 include("article/index.php");

?>

ERROR 404 PERSONALIZADO

Si creamos el fichero friendly_urls.php todas las peticiones a ficheros que no existan irán ahí, con lo cual la configuración del error 404 personalizado ya no tiene efecto. Tendremos que hacerlo nosotros.

Retomando el ejemplo anterior:

<?php

// Recoger URI
$URI = $_SERVER["REQUEST_URI"];

// Expresión regular
$preg = "/\/article\/([0-9]+)([-a-z0-9]+)\.html/"; 

// Comprobar si la URI cumple la expresión regular
if (preg_match($preg, $URI)) {

    // Obtener Id
    $id = preg_replace($preg, "$1", $URI);

    // Incluir articulo
     include("article/index.php");

} else {

    // Cabecera de error 404
    header("HTTP/1.0 404 Not Found");

    // Incluir nuestro fichero de error personalizado
    include("error404.php"); 

 }

?>
Este tema fue cerrado y no se pueden escribir nuevas respuestas
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 10/Mar/2009, 03:49
Torry_II07kMar/09
Por: , el 14/Sep/2003, 21:32
Alfamil87 User 479801 Nodws chavp72kSep/03
Por: , el 27/Jul/2003, 19:07
1K3R JoRDiTu22kJul/03
Por: , el 03/Sep/2002, 22:05
LiM cuenta_dada_de_baja -Raziel- zetousse HeDa113kSep/02
Por: User 602944, el 28/Ago/2012, 13:04
User 602944 gradocaine NoSetup.org42kAug/12