Вы можете использовать .htaccess для этого. Например:
RewriteEngine On
RewriteRule ^questions/(\d+)/([a-z-]+) index.php?id=$1&title=$2 [L]
Ваша страница PHP (index.php) получает идентификатор и заголовок в качестве параметров в $_GET[]
:
echo $_GET['title'];
// get-the-title-of-a-page-url
Затем вы можете использовать это (или идентификатор, который проще), чтобы получить правильный элемент из вашего источника данных:
// Assuming you didn't store the - in the database, replace them with spaces
$real_title = str_replace("-", " ", $_GET['title']);
$real_title = mysql_real_escape_string($real_title);
// Query it with something like
SELECT * FROM tbl WHERE LOWER(title) = '$real_title';
Предполагая, что у вас есть параметр id в каком-либо URL-адресе, запрос проще на основе этого значения. Часть заголовка действительно может быть использована только для создания читаемого URL, без необходимости действовать в PHP.
В обратном порядке, чтобы преобразовать заголовок в format-like-this-to-use-in-urls
, выполните:
$url_title = strtolower(str_replace(' ', '-', $original_title));
Выше предполагается, что ваши заголовки не содержат символов, которые являются недопустимыми в URL ...
$article_link = "http://example.com/spowpost.php?post=$postid&$title=$url_title";
Или передать в .htaccess:
$article_link = "http://example.com/spowpost$postid/$url_title";