Una URL amigable o URL semántica es una URL fácil de entender, tanto para los buscadores, como para el usuario del sitio web y que muestra el asunto de la página con sólo leer su dirección.
Si no existieran las URLs amigables es muy probable que la navegacion de unos sitios fuera:

www.tusitio.com/urls?p=1234

(la cual , no nos dice nada)

Si eres programador y trabajas con WordPress, es probable que en Ubuntu te hayas dado cuenta que despues de instalar Apache2 y WordPress las URLs Amigables no funcionan. Esto no es un error. Más bien es la configuración por defecto de Ubuntu.

Para poder utilizar URLs Amigables, vamos a configurar un Virtual Host. Para lograr esto, como primer paso deberemos habilitar el modulo rewrite de Apache con el siguiente comando:

sudo a2enmod rewrite

Reiniciamos nuestro servidor web Apache para que tome los cambios mediante el comando:

sudo service apache2 restart

Podemos chequear si está funcionando el modulo rewrite que acabamos de habilitar haciendo:

apache2ctl -M

Si aparece rewrite en la lista, podemos seguir adelante. Para continuar utilizaremos un editor de texto (por ej: gedit, nano, mcedit, etc) para modificar el archivo de configuración de Apache apropiado para nuestro sitio en la carpeta /etc/apache2/sites-avaiable/. Para un solo sitio, el archivo que debemos editar es /etc/apache2/sites-avaiable/default. En el caso de tener varios sitios, el nombre del archivo a editar debe reflejar el nombre del sitio a configurar. En conclusión, para editar la configuración por defecto debemos usar:

sudo gedit /etc/apache2/sites-available/default

Una vez dentro del editor, buscamos la sección Directory referida a la carpeta del sitio que queremos configurar. Normalmente para en /etc/apache2/sites-avaiable/default es <Directory /var/www> es justamente aquí donde cambiamos:

AllowOverride None por AllowOverride All

Esta directiva nos permite, mediante un archivo .htaccess, reemplazar la configuración por defecto de Apache, y es necesario habilitarla para que funcione la reescritura de URLs.

Una vez más reiniciamos Apache mediante:

sudo service apache2 restart

Y listo, tan simple como eso, ya tenemos nuestro servidor web Apache configurado para aceptar URLs Amigables.