.md, /entities/{id}) * are not real WP posts, so WordPress's canonical redirect wrongly appends a * trailing slash (a 301 hop on the exact URLs we advertise to AI crawlers, and * a nonsensical ".md/" for the Markdown copies). Skip canonical redirect when one * of our route query vars is set so each serves a clean 200 directly. */ add_filter( 'redirect_canonical', function ( $redirect_url ) { foreach ( [ 'semantic_llms_txt', 'semantic_llms_full', 'semantic_md_path', 'semantic_entity' ] as $qv ) { if ( get_query_var( $qv ) ) return false; } return $redirect_url; }, 10, 1 );