我正在试图弄清楚如何做到这一点。目前我的网址看起来像这样:
mysite/1/page-title
1是页面ID,我想摆脱它,所以完整的网址看起来像这样:
mysite/page-title
我找不到一个很好的教程来解释如何在mysql中存储“页面标题”,最重要的是如何在php中调用它...有人可以解释它吗?
答案 0 :(得分:1)
它通常的工作方式是使用重写规则(基于你使用的服务器,但通常它的Apache和nginx实现了类似的东西)。
基本上,如果有人请求/ some-page,Apache会在内部将其重写为/your_script.php?some_field_in_db=some-page
我提到的原因是我在进一步解释之前确认你使用了相同的东西:)
好的,现在换另一位 - 你想隐藏页面网址中的ID。这意味着您依赖“页面标题”作为数据库中的键(假设您从URL中删除“1”时重写规则有效)。
您需要做的是在db表的page_title列中添加唯一索引(或者如果有的话,可以调用任何列),并且您要根据该键查找页面内容而不是ID。
现在,如果您需要从网址获取“页面标题”的方法 - 这本身就是另一个问题,需要您提供更多解释。
答案 1 :(得分:0)
这就是我将如何做到的。
在mysql中我将添加另一行名为page_title
的行varchar(250) unique
,然后使用像这样的函数将文章标题转换为page_title格式
function convert_title($title){
$title = preg_replace ("~[^a-zA-Z0-9]~", " ", $title);
$title = preg_replace ("~\s+~", "-", $title);
$title = substr($title, 0, 225);
$i = 0;
do{
$exists = title_duplicate_check ($title);
$i++;
}while ($exists);
if ( $i > 1) $title .= "_" . $i;
return $title;
}
function title_duplicate_check ($title){
//check if the title exists or not
}
然后在请求页面时,我将从网址获取标题,并使用与您post_title
相同的id
来检查标题。由于post_title
现在是唯一的,因此您可以使用此功能。
希望有所帮助