Można do tego użyć PHP, ale w htaccess trzeba zrobić przekierowanie wszystkiego oprócz istniejących fizycznie plików na jeden plik początkowy aplikacji, najczęściej index.php. To bardzo często spotykana metoda. Wygodna i dająca większe możliwości, bo cała decyzja dotycząca tego co wyświetlić pod danym adresem zapada w aplikacji, niezależnie od serwera. Wymaga jednak wspomnianej konfiguracji np. w htaccess, bo Apache nie będzie wiedział, że pod tym adresem powinien coś zrobić jeśli fizycznie pliku/katalogu o podanej nazwie na dysku nie będzie i zwróci 404. Z regułą przekierowującą na index.php niezależnie od adresu zostanie wywołany ten plik i już po stronie PHP decydujesz co się stanie dalej, co zostanie uruchomione, np. poprzez pobranie jakichś danych z bazy.
Samo generowanie nie wymaga specjalnej procedury, po prostu w bazie możesz sobie zrobić kolumnę na ten fragment z adresu, który będzie uzupełniany w momencie zapisu tytułu. Następnie przy wejściu na stronę szukać rekordu dla podanej frazy - jeśli jest to wykonywać z nim określone akcje i przygotowywać widok, a jeśli nie ma to zwrócić 404.