Responder
URLs Amigables en Espacios web Miarroba
Haz clic para ver el perfil del usuario

Moderador del foro
Moderador del foro

#1

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:

friendly_urls.php
<?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:

friendly_urls.php
<?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:
Suscribir

Permisos:

TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 19:45 UTC+01:00
Ir al subforo:
Temas similares
TemaUsuariosRespuestasVisitasActividad
07kMar/09
72kSep/03
22kJul/03
112kSep/02
4801Aug/12