SEO дружественные ссылки с Express JS - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь создать блог-сайт, используя Node + Express JS. Я хотел бы сделать его оптимизированным для SEO, потому что в настоящее время ссылки на блоги используют идентификаторы базы данных. Например:

localhost:3000/posts/1

Тем не менее, я хочу получить такую ​​ссылку:

localhost:3000/posts/my-adventure/

Я следую за сайтом dev.to и вижу, что они используют href, а не ids, но с названиями статей. Я озадачен здесь, потому что это не кажется эффективным с точки зрения производительности, так как базу данных придется искать по длинным строкам?

<a href="/djangostars/choosing-python-for-web-development-top-16-pros-and-cons-4c4k" id="article-link-185734" class="index-article-link" aria-label="Main Story" data-featured-article="articles-185734">
</a>

Я хотел бы попросить вашей помощи о том, как я мог бы реализовать этов моем приложении. В настоящее время я использую этот тип маршрута:

router.get("/:id", async (req, res, next) => {
  const post = await db.query(
    "SELECT * FROM posts WHERE id = $1",
    req.params.id
  );
  res.render("readPost", { title: post.title, post: post });
});

1 Ответ

0 голосов
/ 07 октября 2019

В одну сторону (я предпочитаю это)

добавить идентификатор к URL, чтобы сделать его уникальным . (что-то вроде localhost: 3000 / posts / my-adventure-1 /)

Ваш фрагмент кода может не измениться, кроме типа столбца db (если вы использовали число)

Вы можетеиспользуйте slugify .

Другой способ

router.get("/:slug/:id", async (req, res, next) => {
  const post = await db.query(
    "SELECT * FROM posts WHERE id = $1",
    req.params.id
  );
  res.render("readPost", { title: post.title, post: post });
});

https://medium.com/@thiscodeworks.com/implementing-url-slugs-on-express-node-js-5f5890431dea

...