我需要有经验的人的帮助:)
我注意到很多具有 SEO 友好网址(例如 www.site.com/123456/some-title)的网站只采用值 123456,其余的并不重要,htaccess 只是将变量 123456 发送到特定网址,然后访问者看到内容。
所以,如果我输入
- www.site.com/123456/some-title-1
- www.site.com/123456/some-title-2
- www.site.com/123456/some-title-3
- www.site.com/123456/some-title-4
我总是会看到相同的页面,因为传递的 id 始终是相同的 123456。
但我看到一些网站纠正了这个问题。例如:
-如果我输入上面 4 个网址中的任何一个,它们会向我显示内容,但会首先将我重定向到正确的网址 (www.site.com/123456/some-title)。
我怎样才能做到这一点?我认为这是一个 php 问题,因为他们需要连接到数据库来检查 id 123456 的原始“url 路径”,对吗?
如果有人能给我一些建议,那就太好了! 谢谢
最佳答案
How can I do that? I think this is a php question, since they need to connect to the database to check the original "url path" for the id 123456, right?
这是一个 PHP 问题。这里需要发生两件事。当有人请求时:
www.site.com/123456/some-title-1
htaccess 中发生路由,类似于(示例规则):
RewriteRule ^([0-9]+)/(.*)$ /some.php?id=$1&slug=$2 [L]
因此,无论脚本是什么(some.php),它都会获得两个参数,一个 ID 和一个 slug。 ID 用于查找数据库或实际内容存储的位置。当它从数据库中获取该信息时,它可以比较数据 block 。如果它们不同,则不提供内容,而是重定向浏览器以显示正确的 slug。然后我们从头开始,浏览器提交请求(这次使用正确的 ID slug),重写规则将其路由到 some.php
并且因为 slug 是正确的,所以实际内容得到提供给浏览器。
关于php - htaccess 或 php 重定向到此任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909712/