Я бы использовал комбинацию .htaccess (mod rewrite) и полей id и title в вашей БД.
Во-первых, все URL-адреса страниц / ссылки должны быть в форме:
yourdomain.com/page/idnumber/pagetitle
При наличии «pagetitle» для удобства чтения простого текста и бесполезной цели (просто значение заголовка из вашей БД), а идентификатор является фактической ссылкой на страницу (идентификатор этой страницы в вашей БД).
Поскольку вы используете идентификатор в качестве привязки ссылки на страницу, не имеет значения, изменяет ли пользователь заголовок / URL страницы в БД, поскольку идентификатор записи фиксирован.
Ваш .htaccess должен содержать:
RewriteEngine On
RewriteRule ^page/(.*)/(.*)/?$ yourdomainpath/pagehandler.php?pageid==$1 [NC,L]
Для этого нужно взять URL указанного выше типа (например, yourdomain.com/page/1/my page /) и направить этот запрос в скрипт php, который загружает контент, например, yourdomainpath / pagehandler.php, передавая идентификатор как переменную GET 'pageid'.
Пользователь видит красивый чистый URL-адрес, который затем .htaccess «перенаправляет» за кулисы к вашему сценарию, который извлекает идентификатор из URL-адреса и получает содержимое, связанное с этим идентификатором, в вашей БД. Так как это основано на идентификаторе, пользователи могут свободно изменять содержимое других полей в БД без какого-либо эффекта. Хорошее, чистое решение.