我在试着弄明白怎么做。目前,我的urls如下所示:
mysite/1/page-title1是页面id,我想去掉它,这样完整的url就会如下所示:
mysite/page-title我找不到一个好的教程来解释如何在mysql中存储"page-title“,以及最重要的是如何在php中调用它……有没有人能解释一下?
发布于 2011-03-10 19:37:28
这就是我将如何做的。
在mysql中,我将使用varchar(250) unique添加另一个名为page_title的行,并使用如下函数将文章标题转换为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
}然后,当页面被请求时,我将从url中获取标题,并使用与您现在使用id相同的post_title来检查标题。由于post_title现在是唯一的,因此使用它将不会有任何问题。
希望能有所帮助
发布于 2011-03-10 19:35:51
它通常的工作方式是使用重写规则(基于您使用的服务器,但通常是Apache和nginx实现了类似的东西)。
基本上,如果有人请求/some page,Apache会在内部将其重写为/your_script.php?some_field_in_db=some page
我提到这一点的原因是,在进一步解释之前,我确认您使用的是相同的东西:)
好了,现在是另外一点了--你想对你的页面URL隐藏ID。这意味着你依赖于你的"page-title“作为数据库中的关键字(假设你的重写规则在你从URL中删除'1‘时起作用)。
您需要做的是在db表中的page_title列上添加唯一的索引(如果有的话,或者其他任何列的名称),并且您必须根据该键而不是ID来查找页面内容。
现在,如果您需要从URL获取“页面标题”的方法-这本身就是另一个问题,您需要更多的解释。
https://stackoverflow.com/questions/5258976
复制相似问题