我有一个网站,里面有故事。我可以在多个类别中拥有多种类型的故事,例如:
- 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/