64

我目前正在阅读其出色文档中的 CodeIgniters 教程。然而,有一个经常使用的术语,它被称为“蛞蝓”。我环顾四周以找出该术语的含义,但我无法理解它是什么以及它的用途。以下是它何时使用的示例:

使用此代码,您可以执行两个不同的查询。您可以获取所有新闻记录,或通过其 slug 获取新闻项目

4

5 回答 5

116

当您访问资源时,slug 是 URL 的一部分。假设您有一个 URL,如下所示,它显示系统中的所有汽车:

http://localhost/cars

当您想在系统中引用特定汽车时,您将提供以下 URL:

http://localhost/cars/audi-a6/

请注意,该 URL 仍然非常合乎逻辑,并且对 SEO 非常友好。至于使用蛞蝓,那是你自己的判断。上面的audi-a6字符串可能是您系统中汽车的唯一标识符——假设您有一个包含以下字段的关系数据库:

id
car_name
car_brand
car_unique_identifier

然后该字段car_unique_identifier将用于存储在 slug 中显示的值;在上面我用奥迪 A6 汽车指定的示例中,这是您的audi-a6字符串所在的位置。

您也可以以其他方式使用它——例如,如果您有一个功能类似于博客的帖子控制器。如果页面的标题是 URL 编码的,那么它的标题可能就是它的标签。对于我们名为“让 SEO 变得更好的最佳方法”的文章,您可以提供以下 URL:

http://localhosts/posts/best-ways-to-make-seo-better

然后url_decode(),您将在 slug 上运行,您将获得让 seo 更好的字符串 bestways ,您可以使用它来通过标题查找帖子。

它不需要停在那里——你可能决定用多个 slug 来代表某事——让我们看看 BBC 是如何做到的。我从今天开始随机获取一篇文章,其 URL 如下:

http://www.bbc.co.uk/news/world-africa-24506006

这链接到一篇名为:非洲联盟敦促国际刑事法院撤销针对领导人的案件。BBC 这样做的方式是他们使用 slug world-africa-24506006的最后一部分,即24506006来识别他们系统中的唯一条目。然后,他们很可能使用world-africa来表示帖子所属的类别(尽管这可能只是一个假设,但仍然是有根据的猜测)。

最后,让我们想象一下下面的数据库表,用于研究论文。

id
category
title

您可能有一个类似于以下示例的示例。

http://localhost/papers

此 URL 代表系统中当前的所有研究论文。然后,您将能够通过以下 slug 访问所有有关物理学的研究论文:

http://localhost/papers/physics

我们的 slug 是物理,我们的数据库选择当前看起来像:

SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'

然后,您可以公开以下 URL:

http://localhost/papers/physics/gravitation

现在我们的蛞蝓由物理引力组成。我们在幕后的查询可能类似于:

SELECT *
FROM papers
WHERE LOWER(papers.category) = 'physics'
AND LOWER(papers.title) = 'gravitation'

这使我们能够唯一地标识我们系统中的条目。

所以我们反复使用蛞蝓来过滤我们的信息。在示例中,当我们在没有任何 slug 的情况下运行 URL 时:

http://localhost/papers

我们想列出所有可用的研究论文。当我们使用物理slug 运行 URL 时:

http://localhost/papers/physics

我们想列出所有关于物理学的研究论文,从而缩小我们的结果。最后,当我们提供两个 slug 时,我们可以唯一地标识系统中的一个条目。

http://localhost/papers/physics/gravitation

我们可以对此进行不同的建模吗?当然!根据我们系统的要求,我们可以规范化和非规范化我们的关系表。我们可以有一个固定链接系统,所以我们的帖子表看起来像这样:

 id
 title
 permalink

然后我们可能有以下条目:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

从而暴露 URL:

 http://localhost/papers/physics-gravitation-breakthrough

在上面的例子中,slug physical-gravitation-breakthrough允许我们通过以下方式唯一标识一个帖子:

 SELECT *
 FROM papers
 WHERE papers.permalink = physics-gravitation-breakthrough
于 2013-10-12T15:00:44.713 回答
81

简短的回答

what-is-a-slug是这个问题的 URL 中的一部分。

于 2018-01-23T20:48:19.923 回答
10

“slug”是完全依赖于上下文的词,但是在编程中或就这个问题而言,这里的“slug”指的是一个 URL。我们知道一个URL 不能包含每个字符。这就是为什么当任何帖子、页面、控制器都将这些类型输入到标题时,所以它的 slug 被用作 URL。这可能是自动派生的。

因此,总而言之,slug 是任何名称的URL 友好版本

于 2017-03-09T07:08:51.543 回答
4

下面是一个蛞蝓的例子:

 <?php
 function create_slug($string){
  $slug=preg_replace('/[^A-Za-z0-9-]+/', '-', $string);
  return $slug;
   }
  echo create_slug('does this thing work or not');
   //returns 'does-this-thing-work-or-not'
  ?>
于 2018-09-13T16:39:41.733 回答
0

上面给出的所有答案都是正确的,但我想直接回答这个问题。 Codeigniter 教程示例中的Slug指的是 URL“新闻”。如果您的数据库中没有“新闻”作为 $slug 或 slug,并且您在浏览器中运行此 url,“index.php/news/view”将返回错误 404_page not found。我遇到了这个问题,直到我阅读了上面的答案,这让我理解了 Slug 的含义。我将我的 slug 更改为数据库表中的新闻。蛞蝓就像一个指针。

于 2017-11-03T10:10:13.803 回答