Uma técnica muito comum hoje em dia é o uso de URLs Amigáveis (limpas), ou então, em ingles: Search engine friendly URLs.

Estou disponibilizando um algoritmo que tenho utilizado em alguns projetos.

Exemplos de URLs geradas:

Título: Gerando URLs Amigáveis com PHP (Search engine friendly URLs)
URL: gerando-urls-amigaveis-com-php-search-engine-friendly-urls

Título: Search Engine-Friendly URLs [PHP Tutorials]
URL: search-engine-friendly-urls-php-tutorials

Título: Search Engine Friendly URL’s explained
URL: search-engine-friendly-urls-explained

Código

<?php

function normalizestr($str)
{
	$regex = '/&((?i)[a-z]{1,2})(?:'
	       . 'grave|accent|acute|circ|'
	       . 'tilde|uml|ring|lig|cedil|'
	       . 'slash);/';
	$str = htmlentities($str);
	$str = preg_replace($regex, '$1', $str);
	$str = str_replace(array
	(
		'&ETH;',
		'&eth;',
		'&THORN;',
		'&thorn;'
	), array('dh', 'd', 'TH', 'th'), $str);
	return $str;
}

function title2url($title, $id = null, $sep = '/')
{
	$title = strtolower($title);
	$title = str_replace(
	    array('_', ' '),
	    array('-', '-'),
	    normalizestr($title));
	$title = preg_replace('![^\w_-]!', '', $title);
	$title = preg_replace('!-{2,}!', '-', $title);
	$title = preg_replace('!^-+|-+$!', '', $title);
	return $title . (is_null($id) ? '' : $sep . $id);
}

$s = 'Gerando URLs Amigáveis com PHP';

echo title2url($s);

?>