2

我需要有经验的人的帮助:)

我注意到很多具有 SEO 友好 url 的网站,如 www.site.com/123456/some-title 只取值 123456,其余的无关紧要,htaccess 只是将变量 123456 发送到特定的 url,然后访问者看到内容。

所以,如果我输入

  1. www.site.com/123456/some-title-1
  2. www.site.com/123456/some-title-2
  3. www.site.com/123456/some-title-3
  4. www.site.com/123456/some-title-4

我将始终看到相同的页面,因为传递的 id 始终是相同的 123456。

但我看到一些网站正在纠正这个问题。例如:

- 如果我输入上面 4 个 url 中的任何一个,他们会向我显示内容,但他们会首先将我重定向到正确的 url (www.site.com/123456/some-title)。

我怎样才能做到这一点?我认为这是一个 php 问题,因为他们需要连接到数据库来检查 id 123456 的原始“url 路径”,对吧?

如果有人可以给我一个提示,那就太好了!谢谢

4

1 回答 1

2

我怎样才能做到这一点?我认为这是一个 php 问题,因为他们需要连接到数据库来检查 id 123456 的原始“url 路径”,对吧?

这是一个 PHP 问题。这里需要做两件事。当有人要求:

www.site.com/123456/some-title-1

在 htaccess 中会发生路由,例如(示例规则):

RewriteRule ^([0-9]+)/(.*)$ /some.php?id=$1&slug=$2 [L]

所以无论脚本是什么(some.php),它都会得到两个参数,一个 ID 和一个 slug。ID 是它用来查找数据库或存储实际内容的任何位置的东西。当它从数据库中获取该信息时,它可以比较 slug。如果它们不同,那么不要提供内容,而是重定向浏览器以显示正确的 slug。然后我们从头开始,浏览器提交请求(这次使用正确的 slug 作为 ID),重写规则将其路由到some.php,因为 slug 是正确的,实际内容被提供给浏览器。

于 2013-09-20T06:07:30.043 回答