首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中存储漂亮的url并在php中调用它们

如何在mysql中存储漂亮的url并在php中调用它们
EN

Stack Overflow用户
提问于 2011-03-10 19:22:14
回答 2查看 408关注 0票数 0

我在试着弄明白怎么做。目前,我的urls如下所示:

代码语言:javascript
复制
mysite/1/page-title

1是页面id,我想去掉它,这样完整的url就会如下所示:

代码语言:javascript
复制
mysite/page-title

我找不到一个好的教程来解释如何在mysql中存储"page-title“,以及最重要的是如何在php中调用它……有没有人能解释一下?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-10 19:37:28

这就是我将如何做的。

在mysql中,我将使用varchar(250) unique添加另一个名为page_title的行,并使用如下函数将文章标题转换为page_title格式

代码语言:javascript
复制
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现在是唯一的,因此使用它将不会有任何问题。

希望能有所帮助

票数 0
EN

Stack Overflow用户

发布于 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获取“页面标题”的方法-这本身就是另一个问题,您需要更多的解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5258976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档