php - htaccess 或 php 重定向到此任务?

标签 php .htaccess redirect mod-rewrite

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

我注意到很多具有 SEO 友好网址(例如 www.site.com/123456/some-title)的网站只采用值 123456,其余的并不重要,htaccess 只是将变量 123456 发送到特定网址,然后访问者看到内容。

所以,如果我输入

  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 个网址中的任何一个,它们会向我显示内容,但会首先将我重定向到正确的网址 (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/

相关文章:

javascript - window.location.href 但地址栏发生变化的地方

linux - 无法让 nftables 将端口 80 重定向到 8080

php - 如何修复 ‘"frontend\models\model"must have a primary key' 在 Yii2 高级模板中的错误

php - <br/> 的行尾检查

WordPress 不必要的重定向。如何解决问题

apache - 使用 .htaccess 将一个文件夹重定向到另一个文件夹,但保留原始 URL 并阻止对所有其他文件夹的访问

apache - Htaccess - 如果未设置 env var 则跳过重定向

php - 使用 PHP 比较来自不同服务器的两个表

javascript - 无法在 Controller Laravel 5.1 中检索通过 ajax 发送的数据

javascript - 如何检测导致页面重定向的 Javascript 代码?