Para poder lograr la funcionalidad que mencionas deberás de trabajar con url's amigables con htaccess.
Archivo ".htaccess"
Código PHP:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?enlace=$0 [PT,L]
Este archivo deberá estar en la raíz del proyecto y funcionaria de la siguiente manera:
Como lo ingresarías en tu browser
http://www.miweb.com/enlace1
Como lo interpreta el servidor
http://www.miweb.com/index.php?enlace=/enlace1
con lo cual con un simple $_GET['enlace'] podrás obtener el parametro que pasas por la url.
Para captura el enlace y luego redireccionarlo lo podríamos hacer de la siguiente manera.
Recomendaria que al momento de registrar un nuevo anuncio generaras y almacenaras la url en la base de datos, ademas de validar que sea unica.
Archivo "index.php"
Código PHP:
<?php
if (isset($_GET['enlace']) && !empty($_GET['enlace'])) {
$enlaces_string = trim(str_replace('/', ' ', $_GET['enlace']));
$enlaces_array = explode(' ', $enlaces_string);
$enlace = $enlaces_array[0];
$actual_url = 'http://' . $_SERVER['HTTP_HOST'] . '/';
$registros = array(
array(
'enlace' => 'enlace1',
'titulo' => 'este es el enlace 1',
'url_amigable' => urls_amigables('este es el enlace 1') . '.html'
),
array(
'enlace' => 'enlace2',
'titulo' => 'este es el enlace 2',
'url_amigable' => urls_amigables('este es el enlace 2') . '.html'
)
);
$data_a_mostrar = array();
for ($i = 0; $i < count($registros); $i++) {
if ($registros[$i]['url_amigable'] === $enlace)
$data_a_mostrar = $registros[$i];
if ($registros[$i]['enlace'] === $enlace)
header('Location: ' . $registros[$i]['url_amigable']);
}
if (!empty($data_a_mostrar)) {
echo '<pre>';
print_r($data_a_mostrar);
echo '</pre>';
} else {
echo 'ERROR 404';
}
}
function urls_amigables($url) {
$url = strtolower($url);
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace($find, $repl, $url);
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace($find, '-', $url);
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace($find, $repl, $url);
return $url;
}
Con este codigo capturo el parametro "/enlace1" de la url "http://www.miweb.com/enlace1", luego lo limpio y hago una busqueda en un arreglo de datos ( en tu caso seria una consulta a la base de datos en base al enlace capturado de la url ).
Obtienes la url amigable de la base de datos, armas y redireccionas a la nueva url que seria "http://www.miweb.com/este-es-el-enlace-1.html", donde este enlace funcionaria de la misma manera. Capturas el parámetro que en este caso seria "/este-es-el-enlace-1.html", lo limpias y lo buscas en la base de datos.
Si existe se mostrara la información del anuncio, caso contrario mostrar un error 404.
Saludos