PHP, htaccess: применить заголовок страницы в URL - PullRequest
4 голосов
/ 08 февраля 2012

Я хочу применить заголовок страницы в URL

например, здесь (stackoverflow) URL-адрес примерно такой:

http://stackoverflow.com/questions/10000000/get-the-title-of-a-page-url

вы можете увидеть часть "get-the-title-of-page-url", которая является заголовком страницы

что я имею в виду, когда пользователь заходит в spowpost.php? Post = 1

фактический URL, который отображается, когда загрузка страниц будет spowpost.php? пост = 1 $ название = .. the_title ..

как я могу это сделать?

РЕДАКТИРОВАТЬ: я думал о htaccess, но я не очень хорошо знаю это, поэтому учебник поможет для этого CERTAIN случае ..

Ответы [ 3 ]

5 голосов
/ 08 февраля 2012

Вы можете использовать .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";
1 голос
/ 08 февраля 2012

Насколько я понимаю, ваш заголовок будет передан на страницу как часть URL.Чтобы отобразить это в строке заголовка, поместите это в раздел:

<?php $title=urldecode($_GET["title"]); echo "<title>$title</title>"; ?>

Возможно, вам придется изменить части этого, например, тире или что-то еще.Если это так, используйте PHP-функцию str_replace: http://php.net/str_replace

0 голосов
/ 08 февраля 2012

Не знаю, с какой проблемой вы столкнулись, но только в соответствии с тем, что вы говорите в своем сообщении, ответ будет:

1.Вы берете идентификатор из URL.
2.Вы выполняете поискв вашей базе данных для исходного заголовка
3. А затем отобразите его в теге вашего HTML.

Уточните, если у вас есть проблемы с любым из предыдущих пунктов.

...