Mysql
 sql >> Base de données >  >> RDS >> Mysql

rediriger 404 vers des URL similaires

Oh mec, oh mec !

Ce que vous demandez n'est pas simple et nécessite que vous disposiez d'un ordinateur puissant, mais les résultats sont tout simplement incroyables.

Voici ce que je suggérerais de faire :

  • Pour une gestion correcte de l'erreur 404, vous avez le ErrorDocument redirection dans la configuration vhost. Le mien ressemble à ceci :ErrorDocument 404 /404.php;
  • Si vous avez un 404, Apache appellera /404.php avec tous les arguments (quelle mauvaise URL et ainsi de suite, dump $_SERVER pour voir ça). Il faut tester s'il n'y a que deux expressions dans l'URL / c'est-à-dire http://mysite.com/(expr1)/(expr2)/
  • Si non, faites un 404 classique.
  • Si oui, faites un SOUNDEX rechercher avec MySQL (dans votre 404 Php dossier). Voir l'exemple de requête ici .
  • Ensuite, dans ce cas "spécial" 404, faites une suggestion, comme le fait Google, c'est-à-dire :"vouliez-vous dire /action/story-name-action/ ? si oui, cliquez sur le lien".

C'est un travail difficile, mais c'est à la fois intéressant et montre votre talent. Très peu de sites Web le font (je ne connais que Google en fait).

Voici une démo sur ma table française qui pourrait vous donner un aperçu de son fonctionnement :

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>