web-dev-qa-db-fra.com

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

WordPress corrige automatiquement les permaliens (URL) même s’il n’est pas entré correctement. Par exemple WordPress vous atterrira dans example.com/some-post même si vous entrez example.com/idontexist/some-post ou même example.com/some

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

Edit: J'ai également remarqué que le fichier .htaccess vérifie la présence de fichiers/répertoires virtuels à l'aide de !f et !d et redirige la demande vers index.php dans le dossier du blog.

11
Praveen Lobo

La fonction redirect_canonical dans /wp-includes/canonical.php est appelée sur une URL donnée et tentera de deviner l'URL souhaitée par l'utilisateur et de la rediriger vers cette URL lorsqu'une URL n'existe pas. Il a une énorme quantité de code pour le faire pour toutes sortes d'erreurs courantes.

6
Otto

Utilisez le plug-in "Rewrite Analyzer" de @JanFabry sur ici, dans le référentiel "officiel" du plug-in WPSE

3
kaiser

C'est assez simple. WordPress utilise l'opérateur LIKE dans une 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 issu de la fonction /wp-includes/canonical.php redirect_guess_404_permalink()

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