如何创建没有标识符的URL

时间:2013-11-30 23:15:24

标签: php apache url url-rewriting url-routing

现在,我看到更多这样的网址:example.com/this_is_content_title 我不确定这是怎么做的,甚至是可能的。我知道大多数网站使用类似example.com/108/some_text_here的内容,108部分是新闻的标识符/ ID,但是,如何在域名之后追加标题以及如何从数据库中获取?

我猜他们正在使用apache附加它,但为什么我们不能看到标识符以及他们如何根据文本搜索/查找内容?

也许:

$title = str_replace(array('_', '/'), '', $_SERVER['REQUEST_URI']);
$query = "SELECT * FROM article WHERE title = '$title'";

我假设他们是如何从数据库中检索内容的,即使它似乎不是有效的方法。因为,基于id而不是整个句子来搜索文章会更快。

无论如何,如果这是他们展示文章的方式,那么如何将标题附加到URI?

不要告诉我它是这样的:

$row['title'] = 'I am title for some article';
echo "<a href='http://example.com/".str_replace(' ', '_', $row['title'])."'";

3 个答案:

答案 0 :(得分:1)

这是调用seo url 您可以在此处查看一些示例http://davidwalsh.name/htaccess-url

答案 1 :(得分:1)

你是对的,就是这样做的,字符串在这里是标识符。此处的解决方法还包括所有标识符的ENUM,但不要过于深入。

这对你来说似乎不是一种有效的方式,我看到了你的观点,但是嘿这个动作只有~0,01秒慢,并且你在SEO上有很多进步,因为你有干净的网址,所以没有什么太糟糕的...

答案 2 :(得分:1)

我不能很好地解释它,但是我正在阅读有关URL重写的Apache文档,我很容易做到我认为他们称之为“静默”重定向,因此无需更改URL客户端服务器将example.com/this_is_content_title的所有请求重定向到example.com/108/some_text_here或者example.com/?id=108

除了服务器配置之外,我认为WordPress会在enable pretty permalinks时使用PHP执行此操作,因此WordPress存储库和codex可能是查找更多详细信息的好地方。