Comment WordPress gère-t-il les permaliens?

11

WordPress corrige automatiquement les permaliens (URL) même s'il n'est pas entré correctement. Par exemple, WordPress vous atterrira example.com/some-postmême si vous entrez example.com/idontexist/some-postou mêmeexample.com/some

Il se pourrait que WordPress utilise RegEx comme ou un algorithme de correspondance qui compare de droite à gauche et s'il trouve une correspondance, il vous amènera à la page même s'il en /.*/reste à gauche. Juste une supposition! Comment WordPress fait-il cela?

Edit: J'ai aussi remarqué que les contrôles de fichiers .htaccess pour fichiers virtuels / répertoires en utilisant !fet !det redirige la demande à index.php sur le dossier de blog.

Praveen Lobo
la source

Réponses:

6

La fonction redirect_canonical dans /wp-includes/canonical.php est appelée sur n'importe quelle URL donnée et tentera de deviner au mieux l'URL que l'utilisateur voulait, et de les rediriger là-bas, lorsqu'une URL n'existe pas. Il a une énorme quantité de code pour le faire pour toutes sortes d'erreurs courantes.

Otto
la source
1
A voté pour "toute l'énorme quantité": D.
Travis Northcutt
1

C'est assez simple. WordPress utilise l'opérateur LIKE dans la requête SQL pour deviner l'URL complète à partir de l'URL partielle lorsqu'il s'agit d'une page 404

Vérifiez ce code extrait de la redirect_guess_404_permalink()fonction /wp-includes/canonical.php

$where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' );
Pramod Jodhani
la source