php - 将 404 重定向到类似的 url

标签 php mysql .htaccess url-rewriting http-status-code-404

我有一个网站,里面有故事。我可以在多个类别中拥有多种类型的故事,例如:

  • child
  • 浪漫
  • 科幻
  • Action
  • 惊悚
  • 任务

可以使用以下网址访问这些故事:

www.example.com/action/story-name-action/
www.example.com/romance/story-name-romance/

第一个参数 (action) 和第二个参数 (story-name-action) 使用规则使用 .htaccess 重定向。 这部分工作得很好。

最近,我从不同的站点获得了几十个 404,这就是我想做的,但我不知道如何:

如果有人输入,例如:/action/story-nme-ction,我想重定向到:action/story-name-action/

有没有一种有效的方法来实现这一点?

最佳答案

天哪,天哪!

你的要求并不简单,需要你有一台功能强大的电脑,但结果简直太棒了。

以下是我的建议:

  • 为了正确处理 404,您在 vhost 配置中有 ErrorDocument 重定向。我的看起来像这样: ErrorDocument 404/404.php ;
  • 当有 404 时,Apache 将调用 /404.php 并带有所有参数(哪个错误的 URL 等等,转储 $_SERVER 以查看此内容)。您必须测试 URL / 中是否只有两个表达式,即 http://mysite.com/(expr1)/(expr2)/
  • 如果没有,则执行经典的 404。
  • 如果是,则执行 SOUNDEX使用 MySQL 搜索(在您的 404 Php 文件中)。见查询样本here .
  • 然后,在这个“特殊”的 404 案例中,做一个建议,就像谷歌所做的那样,即:“你的意思是 /action/story-name-action/?如果是,请点击链接”。

这是一项艰巨的工作,但它既有趣又显示了您的技能。很少有网站这样做(实际上我只知道 google)。

这是我的法语表上的一个演示,可以让您大致了解它的工作原理:

mysql> SELECT * FROM job WHERE
SOUNDEX( description ) LIKE SOUNDEX('Machiniste cinéma');
+-------+--------------------+
| id    | description        |
+-------+--------------------+
| 14018 | Machiniste cinéma  |
+-------+--------------------+
1 row in set (0.06 sec)

mysql> SELECT * FROM job WHERE
SOUNDEX( description ) LIKE SOUNDEX('Mchiniste cinéma');
+-------+--------------------+
| id    | description        |
+-------+--------------------+
| 14018 | Machiniste cinéma  |
+-------+--------------------+
1 row in set (0.06 sec)

mysql> SELECT * FROM job WHERE
SOUNDEX( description ) LIKE SOUNDEX('Machnste cinema');
+-------+--------------------+
| id    | description        |
+-------+--------------------+
| 14018 | Machiniste cinéma  |
+-------+--------------------+
1 row in set (0.06 sec)

mysql> 

关于php - 将 404 重定向到类似的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941433/

相关文章:

php - 来自 JavaScript 的正则表达式

javascript - 尝试使用php和ajax将数据输入mysql数据库而不刷新页面

php - Laravel 所有路由除了 '/' 返回 404

mysql - Ruby on Rails 应用程序未连接

php - 使用最少的资源使用数据库检查唯一的随机值

php - 模式重写代码不起作用

.htaccess - HTML5 样板.htaccess 与 httpd.conf

php - 使用 PhpSpreadsheet 编写 xlsx 文件会删除所有文本框

java - org.json.JSONException : Value Connection of type java. lang.String 无法转换为 JSONObject

.htaccess 缓存静态内容(除非修改)?